目录
当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

DB - 类別

优质
小牛编辑
136浏览
2023-12-01

DB 类别能让你建立及执行资料库查询并取得结果。

query($sql, $type = null)

query 方法回传一个新的 Database_Query_Builder 物件。 确切的物件取决于传递的类型。如果没传递类型,Fuel 选择 DB::SELECT 如果该 SQL 查询以 'SELECT' 开头,而且它将回传一个 Database_Query_Builder_Select 物件。

静态
参数
参数预设描述
$query必要SQL 查询
$typenullSQL 查询类型。可能的值有: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 查询。

静态
参数
参数预设描述
$dbnull资料库连线。
回传最后执行的 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 物件。

静态
参数
参数预设描述
$columnsnull要选择的行。
回传回传一个 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 物件。

静态
参数
参数预设描述
$columnsarray();要选择行的阵列。
回传回传一个 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 物件。

静态
参数
参数预设描述
$tablenull要新增资料的资料表。
$columnsarray();要选择行的阵列。
回传回传一个 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 物件。

静态
参数
参数预设描述
$tablenull要更新的资料表。
回传回传一个 Database_Query_Builder_Update 物件。
範例
// 将预处理:UPDATE `table_name`
$query = DB::update('table_name');

delete($table = null)

delete 方法回传一个新的 Database_Query_Builder_Delete 物件。

静态
参数
参数预设描述
$tablenull要删除的资料表。
回传回传一个 Database_Query_Builder_Delete 物件。
範例
// 将预处理:DELETE FROM `table_name`
$query = DB::delete('table_name');

expr($expression)

expr 方法回传一个新的 Database_Expression 物件。

静态
参数
参数预设描述
$expressionnull表达式。
回传回传一个 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必要要上引号的字串
$dbnull资料库连线。
回传回传一个为 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必要要上引号的字串或字串阵列。
$dbnull资料库连线。
回传回传一个为 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必要要上引号的字串或字串阵列。
$dbnull资料库连线。
回传回传一个为 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必要要前缀的资料表名称。
$dbnull资料库连线。
回传回传前缀的资料表名称或资料表名称。
範例
// prefixed_table_name
print_r(DB::table_prefix('table_name'));

escape($string, $db = null)

escape 方法回传一个为 SQL 查询转义的字串。

静态
参数
参数预设描述
$string必要要转义的字串。
$dbnull资料库连线。
回传回传一个为 SQL 查询转义的字串。
範例
// 'or *\' \"'
print_r(DB::escape('or *\' "'));

list_columns($table, $like = null, $db = null)

list_columns 方法回传一个在资料库表所有行的清单。 选择性的,一个 LIKE 字串可被用于搜寻指定的栏位。

静态
参数
参数预设描述
$table必要要观察的资料表。
$likenull要搜寻的行。
$dbnull资料库连线。
回传回传一个带有栏位资料的阵列。
範例
/*
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 字串可被用于搜寻指定的资料表。

静态
参数
参数预设描述
$likenull要搜寻的资料表。
$dbnull资料库连线。
回传回传一个带有资料表名称的阵列。
範例
/*
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 资料类型。
$dbnull资料库连线。
回传回传一个描述 SQL 资料类型的正规化阵列。
範例
/*
Array
(
    [type] => string
    [exact] => 1
)
*/
DB::datatype('char');

count_records($table, $db = null)

count_records 方法回传资料表中的记录笔数。

静态
参数
参数预设描述
$table必要要计算纪录的来源资料表。
$dbnull资料库连线。
回传回传资料表中的记录笔数。
範例
// (int) 14
DB::count_records('users');

count_last_query($db = null)

count_last_query 方法回传最后查询的记录笔数,没有应用 LIMIT 或 OFFSET。

静态
参数
参数预设描述
$dbnull资料库连线。
回传回传最后查询的记录笔数,没有应用 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必要字符集名称。
$dbnull资料库连线。
回传
範例
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 方法确认连线是否在交易中。

静态
参数
参数预设描述
$dbnull资料库连线。
回传布林 - 只对 PDO 驱动程序有意义,如果在交易中回传 true,否则回传 false。
範例
DB::in_transaction();

start_transaction($db = null)

start_transaction 方法在实例开始一个交易。

静态
参数
参数预设描述
$dbnull资料库连线。
回传布林 - 只对 PDO 驱动程序有意义,所有其他的总是回传 true, 但当 SQL 命令失败时,会抛出一个 Exception。
範例
DB::start_transaction();

commit_transaction($db = null)

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

静态
参数
参数预设描述
$dbnull资料库连线。
回传布林 - 只对 PDO 驱动程序有意义,所有其他的总是回传 true, 但当 SQL 命令失败时,会抛出一个 Exception。
範例
DB::commit_transaction();

rollback_transaction($db = null, $rollback_all = true)

rollback_transaction 方法回滚所有等待中的交易查询。

静态
参数
参数预设描述
$dbnull资料库连线。
$rollback_alltrue回滚模式:
true - 回滚并关闭交易机制;
false - 只在目前层级回滚。
回传布林 - 只对 PDO 驱动程序有意义,所有其他的总是回传 true, 但当 SQL 命令失败时,会抛出一个 Exception。
範例
DB::rollback_transaction();

交易範例

// 典型的交易程式码流程
try
{
    DB::start_transaction();

    // 一些查询……

    DB::commit_transaction();

    // 回传查询结果
}
catch (Exception $e)
{
    // 回滚等待中的交易查询
    DB::rollback_transaction();

    throw $e;
}