DB 类別
DB 类別能让你建立及执行資料庫查詢并取得結果。
query($sql, $type = null)
query 方法回傳一个新的 Database_Query_Builder 物件。
確切的物件取決於傳遞的类型。如果沒傳遞类型,Fuel 選擇 DB::SELECT 如果該 SQL 查詢以 'SELECT' 開頭,而且它将回傳一个
Database_Query_Builder_Select 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$query |
必要 |
SQL 查詢 |
$type |
null |
SQL 查詢类型。可能的值有:DB::SELECT、DB::INSERT、DB::UPDATE 和 DB::DELETE。 |
|
回傳 |
回傳一个 Database_Query_Builder 請求类型的物件。 |
範例 |
// 将預处理:SELECT * FROM `users`
$query = DB::query('SELECT * FROM `users`');
|
請注意,傳遞正確类型是重要的。
資料庫驅动会有不同的對待。
如果你有一个必須回傳一組結果的查詢,但不是 SELECT,使用
DB::SELECT 來確保結果会正確回傳。
last_query()
last_query 方法回傳最後执行的 SQL 查詢。
靜態 |
是 |
參数 |
|
回傳 |
最後执行的 SQL 查詢。 |
範例 |
// 执行查詢
$user = DB::select()->from('users')->where('id', 1)->execute();
echo DB::last_query();
// SELECT * FROM `users` WHERE `id` = 1
|
select()
select 方法回傳一个新的 Database_Query_Builder_Select 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$columns |
null |
要選擇的行。 |
|
回傳 |
回傳一个 Database_Query_Builder_Select 物件。 |
範例 |
// 将預处理:SELECT *
$query = DB::select();
// 将預处理:SELECT `id`, `name`
$query = DB::select('id', 'name');
|
select_array($columns)
select_array 方法回傳一个新的 Database_Query_Builder_Select 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$columns |
array(); |
要選擇行的陣列。 |
|
回傳 |
回傳一个 Database_Query_Builder_Select 物件。 |
範例 |
// 将預处理:SELECT *
$query = DB::select_array();
// 将預处理:SELECT `id`, `name`
$query = DB::select_array(array('id', 'name'));
|
insert($table = null, $columns = array())
insert 方法回傳一个新的 Database_Query_Builder_Insert 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$table |
null |
要新增資料的資料表。 |
$columns |
array(); |
要選擇行的陣列。 |
|
回傳 |
回傳一个 Database_Query_Builder_Insert 物件。 |
範例 |
// 将預处理:INSERT INTO `table_name`
$query = DB::insert('table_name');
// 将預处理:INSERT INTO `table_name` (`id`, `name`)
$query = DB::insert('table_name', array('id', 'name'));
|
update($table = null)
update 方法回傳一个新的 Database_Query_Builder_Update 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$table |
null |
要更新的資料表。 |
|
回傳 |
回傳一个 Database_Query_Builder_Update 物件。 |
範例 |
// 将預处理:UPDATE `table_name`
$query = DB::update('table_name');
|
delete($table = null)
delete 方法回傳一个新的 Database_Query_Builder_Delete 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$table |
null |
要刪除的資料表。 |
|
回傳 |
回傳一个 Database_Query_Builder_Delete 物件。 |
範例 |
// 将預处理:DELETE FROM `table_name`
$query = DB::delete('table_name');
|
expr($expression)
expr 方法回傳一个新的 Database_Expression 物件。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$expression |
null |
表達式。 |
|
回傳 |
回傳一个 Database_Expression 物件。 |
範例 |
// 回傳 new Database_Expression('COUNT(table_name.table_column)');
$expr = DB::expr('COUNT(table_name.table_column)');
// 在產生查詢的表達式中防止不正確的引號
$expr = DB::expr('columnname + 1');
|
你必須在你查詢中所有的表達式使用 DB:expr(),換句話說,其中的一切不是一个欄位名稱,
以確保你傳遞的值沒有被包在引號或反引號中。
quote($string, $db = null)
quote 方法回傳一个为 SQL 查詢帶引號的字串。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$string |
必要 |
要上引號的字串 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳一个为 SQL 查詢帶引號的字串。 |
範例 |
// 回傳 'something\'s quoted'.
$query = DB::quote("'something's quoted'");
// 回傳 'something\'s quoted' 透過一个已定義的資料庫連線。
$query = DB::quote("'something's quoted'", $db_connection);
|
quote_identifier($string, $db)
quote_identifier 方法回傳一个为 SQL 查詢帶引號的字串。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$string |
必要 |
要上引號的字串或字串陣列。 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳一个为 SQL 查詢帶引號的字串。 |
範例 |
// `users`.`name`
print_r(DB::quote_identifier('users.name'));
// array(
// [0] => `users`.`name`
// )
print_r(DB::quote_identifier(array('users.name')));
|
quote_table($string, $db = null)
quote_table 方法回傳一个为 SQL 查詢帶引號的字串。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$string |
必要 |
要上引號的字串或字串陣列。 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳一个为 SQL 查詢帶引號的字串。 |
範例 |
// `users`
print_r(DB::quote_table('users'));
// array(
// [0] => `users`
// )
print_r(DB::quote_identifier(array('users')));
|
table_prefix($table, $db = null)
table_prefix 方法回傳帶有配置前綴的資料表名稱。
如果沒值的話,只有前綴会被回傳。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$table |
必要 |
要前綴的資料表名稱。 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳前綴的資料表名稱或資料表名稱。 |
範例 |
// prefixed_table_name
print_r(DB::table_prefix('table_name'));
|
escape($string, $db = null)
escape 方法回傳一个为 SQL 查詢轉義的字串。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$string |
必要 |
要轉義的字串。 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳一个为 SQL 查詢轉義的字串。 |
範例 |
// 'or *\' \"'
print_r(DB::escape('or *\' "'));
|
list_columns($table, $like = null, $db = null)
list_columns 方法回傳一个在資料庫表所有行的清单。
選擇性的,一个 LIKE 字串可被用於搜尋指定的欄位。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$table |
必要 |
要觀察的資料表。 |
$like |
null |
要搜尋的行。 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳一个帶有欄位資料的陣列。 |
範例 |
/*
Array
(
[id] => Array
(
[type] => int
[min] => -2147483648
[max] => 2147483647
[column_name] => id
[column_default] =>
[data_type] => int
[is_nullable] =>
[ordinal_position] => 1
[display] => 255
[comment] =>
[extra] => auto_increment
[key] => PRI
[privileges] => select,insert,update,references
)
[name] => Array
(
[type] => string
[column_name] => name
[column_default] =>
[data_type] => varchar
[is_nullable] =>
[ordinal_position] => 3
[character_maximum_length] => 255
[collation_name] => utf8_unicode_ci
[comment] =>
[extra] =>
[key] =>
[privileges] => select,insert,update,references
)
)
*/
print_r(DB::list_columns('users'));
/*
Array
(
[name] => Array
(
[type] => string
[column_name] => name
[column_default] =>
[data_type] => varchar
[is_nullable] =>
[ordinal_position] => 3
[character_maximum_length] => 255
[collation_name] => utf8_unicode_ci
[comment] =>
[extra] =>
[key] =>
[privileges] => select,insert,update,references
)
)
*/
print_r(DB::list_columns('users','%name%'));
|
list_tables($like = null, $db = null)
list_tables 方法回傳一个在資料庫裡所有資料表的清单。
選擇性的,一个 LIKE 字串可被用於搜尋指定的資料表。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$like |
null |
要搜尋的資料表。 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳一个帶有資料表名稱的陣列。 |
範例 |
/*
Array
(
[0] => areas
[1] => fuel_sessions
[2] => config
[3] => files
)
*/
DB::list_tables();
/*
Array
(
[0] => fuel_sessions
)
*/
DB::list_tables('%sessions%');
|
datatype($type, $db = null)
datatype 方法回傳一个描述 SQL 資料类型的正規化陣列。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$type |
必要 |
SQL 資料类型。 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳一个描述 SQL 資料类型的正規化陣列。 |
範例 |
/*
Array
(
[type] => string
[exact] => 1
)
*/
DB::datatype('char');
|
count_records($table, $db = null)
count_records 方法回傳資料表中的記錄筆数。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$table |
必要 |
要計算紀錄的來源資料表。 |
$db |
null |
資料庫連線。 |
|
回傳 |
回傳資料表中的記錄筆数。 |
範例 |
// (int) 14
DB::count_records('users');
|
count_last_query($db = null)
count_last_query 方法回傳最後查詢的記錄筆数,沒有應用 LIMIT 或 OFFSET。
靜態 |
是 |
參数 |
|
回傳 |
回傳最後查詢的記錄筆数,沒有應用 LIMIT 或 OFFSET。 |
範例 |
// SELECT * FROM `users` WHERE `active` = "yes" LIMIT 10;
$limited_result = DB::select()->from('users')->where('active', '=', 'yes')->limit(10)->execute();
// SELECT count(*) as count FROM `users` WHERE `active` = "yes";
DB::count_last_query();
|
set_charset($charset, $db)
set_charset 方法設定連線字符集,此方法由 [static::connect] 自动呼叫。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$charset |
必要 |
字符集名稱。 |
$db |
null |
資料庫連線。 |
|
回傳 |
空 |
範例 |
DB::set_charset('utf8');
|
error_info()
error_info 回傳一个關於最後資料庫错误訊息的陣列。
靜態 |
是 |
參数 |
無
|
回傳 |
array($unified_code, $platform_code, $error_text) |
範例 |
$lasterror = DB::error_info();
|
in_transaction($db = null)
in_transaction 方法確認連線是否在交易中。
靜態 |
是 |
參数 |
|
回傳 |
布林 - 只對 PDO 驅动程序有意義,如果在交易中回傳 true,否則回傳 false。 |
範例 |
DB::in_transaction();
|
start_transaction($db = null)
start_transaction 方法在實例開始一个交易。
靜態 |
是 |
參数 |
|
回傳 |
布林 - 只對 PDO 驅动程序有意義,所有其他的總是回傳 true,
但當 SQL 命令失敗時,会拋出一个 Exception。 |
範例 |
DB::start_transaction();
|
commit_transaction($db = null)
commit_transaction 方法送交所有等待中的交易查詢。
靜態 |
是 |
參数 |
|
回傳 |
布林 - 只對 PDO 驅动程序有意義,所有其他的總是回傳 true,
但當 SQL 命令失敗時,会拋出一个 Exception。 |
範例 |
DB::commit_transaction();
|
rollback_transaction($db = null, $rollback_all = true)
rollback_transaction 方法回滾所有等待中的交易查詢。
靜態 |
是 |
參数 |
參数 |
預設 |
描述 |
$db |
null |
資料庫連線。 |
$rollback_all |
true |
回滾模式: true - 回滾并關閉交易機制; false - 只在目前層級回滾。 |
|
回傳 |
布林 - 只對 PDO 驅动程序有意義,所有其他的總是回傳 true,
但當 SQL 命令失敗時,会拋出一个 Exception。 |
範例 |
DB::rollback_transaction();
|
交易範例
// 典型的交易程式码流程
try
{
DB::start_transaction();
// 一些查詢……
DB::commit_transaction();
// 回傳查詢結果
}
catch (Exception $e)
{
// 回滾等待中的交易查詢
DB::rollback_transaction();
throw $e;
}