1. 程式人生 > >Discuz!X3.1數據庫的操作(二)

Discuz!X3.1數據庫的操作(二)

資源釋放 ech tro art www. 處理 類型 row limit

數據庫自定義query

方法名:BD::query()

參數解釋:

$sql:自定義SQL語句

$arg:需要綁定的數據

$unbuffered:是否使用無緩存查詢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
DB::query("SELECT * FROM %t WHERE id IN (%n)",array(
‘test_db‘, array(1,2,3)
));

//資源集轉換結果集
whlie($res = DB::fetch($query)){
$result[] = $res;
}
debug($result)

//自定義刪除id=11數據
DB::query("delete from %t where dId = %d",array
(
‘test_db‘,9
));
?>

資源集轉換結果集

方法名:DB::fetch()

參數解釋:

$resourceid : 數據庫查詢的query資源

$type : 數組類型

關聯索引

1
2
3
4
5
//資源集轉換結果集
whlie($res = DB::fetch($query)){
$result[] = $res;
}
debug($result)

數字索引

1
2
3
4
5
6
7
8
9
10
<?php
$data = DB::query("select * from %t where dId in(%n)",array
(
‘test_db‘,array(1,2,3,5)
));

while($res = DB::fetch($data,MYSQL_NUM)){
$result[] = $res;
}
print_r($result);
?>

數字索引和關聯索引全部取出

1
2
3
4
5
6
7
8
9
10
<?php
$data = DB::query("select * from %t where dId in(%n)",array(
‘test_db‘,array
(1,2,3,5)
));

while($res = DB::fetch($data,MYSQL_BOTH)){
$result[] = $res;
}
print_r($result);
?>

單字段資源集轉換為結果集

參數解釋:

$resourceid : 數據庫查詢的query資源

$row : 指定行的第一個字段

1
2
3
4
5
6
7
8
9
<?php
$query = DB::query("select * from %t where dId in(%n)",array(
‘test_db‘,array(1,2,3,5)
));

$data = DB::result($query,0);

echo $data;
?>

資源集行數計算

方法名:DB::num_rows()

參數解釋:

$resourceid : 數據庫查詢的query資源

1
2
3
4
5
6
7
8
9
10
<?php
//小數據量用num_rows,大數據用count(*)
$query = DB::query("SELECT * FROM %t WHERE id > %d",array(
‘test_db‘, 7
));

$data = DB::num_rows($query);

echo $data;
?>

資源集資源釋放

方法名:DB::free_result()

參數解釋:

$query:執行SQ語句的query資源

1
2
3
4
5
6
7
8
9
<?php
$query = DB::query("SELECT count(*) FROM %t WHERE id < %d ORDER BY id",array(
‘test_db‘, 7
));

$data = DB::result($query);
DB::free_result($query);
echo $data;
?>

按字段排序

方法名:DB::order()

參數解釋:

$field:需要排序的字段

$order:排序的方式

1
2
3
4
5
6
7
8
9
10
11
12
<?php
//倒序排列
$query = DB::query("select * from %t where dId < %d order by".DB::order(‘dId‘,‘DESC‘),array(
‘test_db‘, 8
));

while($res = DB::fetch($query)){
$result[] = $res;
}

debug($result);
?>

取值區間設定

方法名:DB::limit()

參數解釋:

$start:開始的索引值

$limit:條目數

1
2
3
4
5
6
7
8
9
10
11
12
<?php
//用DB::limit()取出2,3,4條數據,如取出前3條就寫DB::limit(3)
$query = DB::query("SELECT count(*) FROM %t WHERE id < %d ORDER BY".DB::order(‘id‘,‘DESC‘).DB::limit(2,3,4),array(
‘test_db‘, 10
));

whlie($res = DB::fetch(%query)){
$result[] = $res;
}

debug($result)
?>

字段拼接

方法名:BD::implode()

參數解釋:

$array:需要拼接的字段數組

$glue:字段拼接的字符串

1
2
3
<?php
DB::implode(array(‘id‘ => 10, ‘name‘ => ‘ddd‘), ‘and‘);
?>

將id修改成13,name值修改成ccc

1
2
3
4
5
6
7
8
9
<?php
DB::query("update %t set".DB::implode(array(
‘dName‘ => ‘ccc‘,
‘dId‘ => ‘13‘
)).‘where dId=%d‘,array(
‘test_db‘,
8,
));
?>

字段數據設定

方法名:DB::field()

參數解釋:

$field:需要處理的字段名稱

$val:字段對應的值

$glue:連接字段與值的類型

1
2
3
4
5
6
<?php
//id=3改為id=99
DB::query("update %t set".DB::field(‘dId‘,‘99‘,‘=‘)."where dId=%d",array(
‘test_db‘,3)
);
?>

Discuz!X3.1數據庫的操作(二)