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 查詢。

靜態
參数
參数 預設 描述
$db null 資料庫連線。
回傳 最後执行的 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。

靜態
參数
參数 預設 描述
$db null 資料庫連線。
回傳 回傳最後查詢的記錄筆数,沒有應用 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 方法確認連線是否在交易中。

靜態
參数
參数 預設 描述
$db null 資料庫連線。
回傳 布林 - 只對 PDO 驅动程序有意義,如果在交易中回傳 true,否則回傳 false。
範例
DB::in_transaction();

start_transaction($db = null)

start_transaction 方法在實例開始一个交易。

靜態
參数
參数 預設 描述
$db null 資料庫連線。
回傳 布林 - 只對 PDO 驅动程序有意義,所有其他的總是回傳 true, 但當 SQL 命令失敗時,会拋出一个 Exception。
範例
DB::start_transaction();

commit_transaction($db = null)

commit_transaction 方法送交所有等待中的交易查詢。

靜態
參数
參数 預設 描述
$db null 資料庫連線。
回傳 布林 - 只對 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;
}