DB クラス
DB クラスは、データベースクエリの生成と実行および結果の取得を行います。
query($sql, $type = null)
query メソッドは新しい Database_Query オブジェクトを返します。Database_Query オブジェクトは SQL クエリを実行するか、クエリに変数をバインドできます。
第 1 引数はプレースホルダーを含む SQL 文字列です。クエリのバインディング を参照して下さい。
実行結果は第 2 引数に依存します。タイプが指定されなかった場合、Fuel はタイプを自動的に検出しようとします。例えば、SQL クエリが 'SELECT' で始まれば、Fuel は DB::SELECT を選択し、その実行結果は行を取得します。'INSERT'、'UPDATE' または 'DELETE' で始まる SQL クエリの場合も同様です。各々のケースで、結果はクエリが クエリビルダー で処理された場合と同じです。INSERT 文、UPDATE 文、そして DELETE 文 を参照して下さい。
静的 |
はい |
パラメータ |
引数 |
デフォルト |
説明 |
$query |
required |
SQL クエリ |
$type |
null |
SQL クエリタイプ。DB::SELECT 、DB::INSERT 、DB::UPDATE 、DB::DELETE が利用可能です。 |
|
Returns |
要求されたタイプの Database_Query オブジェクト |
例 |
// 生成されるクエリ: SELECT * FROM `users`
$query = DB::query('SELECT * FROM `users`');
|
それが正しい型を渡すことが重要であることに注意してください。
データベースドライバは異なるそれらを扱います。
結果セットを返す必要があるクエリを持っており、しかし SELECT
ではない場合は、必ず結果が正しく返されるように DB::SELECT を使用しています。
instance()
The instance method returns an instance of Database_Connection. It allows you to directly access a database instance, for example
when you have a need to use multiple database connections at the same time.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$db |
null |
The database connection name. |
|
Returns |
an instance of Database_Connection. |
Throws |
FuelException, if the connection name passed is not defined in your database configuration. |
Example |
// get the default connection
$db = DB::instance();
// get a named connection
$db = DB::instance('backup');
|
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 |
select するカラム |
|
返り値 |
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(); |
select するカラムの配列 |
|
返り値 |
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 |
insert するテーブル |
$columns |
array(); |
insert するカラムの配列 |
|
返り値 |
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 |
update するテーブル |
|
返り値 |
Database_Query_Builder_Update オブジェクト |
例 |
// 生成されるクエリ: UPDATE `table_name`
$query = DB::update('table_name');
|
delete($table = null)
delete メソッドは、新しい Database_Query_Builder_Delete オブジェクトを返します。
静的 |
はい |
パラメータ |
引数 |
デフォルト |
説明 |
$table |
null |
delete 元のテーブル |
|
返り値 |
Database_Query_Builder_Delete オブジェクト |
例 |
// 生成されるクエリ: DELETE FROM `table_name`
$query = DB::delete('table_name');
|
expr($expression)
expr メソッドは、新しい Database_Expression オブジェクトを返します。
静的 |
はい |
パラメータ |
引数 |
デフォルト |
説明 |
$expression |
null |
式 |
|
返り値 |
Database_Expression オブジェクト |
例 |
// 返り値: 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 |
データベースコネクション |
|
返り値 |
Database_Expression オブジェクト |
例 |
// 返り値: '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 |
null |
中を見るテーブル |
$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_indexes($table, $like = null, $db = null)
The list_indexes method return a lists all of the indexes on a table.
Optionally, a LIKE string can be used to search for specific index names.
Static |
Yes |
Parameters |
Param |
Default |
Description |
$table |
null |
The table to look in. |
$like |
null |
The indexes to search for. |
$db |
null |
The database connection. |
|
Returns |
Returns an array with field data. |
Example |
/*
Array
(
[name] => PRIMARY
[column] => id
[order] => 1
[type] => BTREE
[primary] => true
[unique] => true
[null] => false
[ascending] => true
)
Array
(
[name] => TypeValue
[column] => type
[order] => 1
[type] => BTREE
[primary] => false
[unique] => true
[null] => false
[ascending] => true
)
Array
(
[name] => TypeValue
[column] => value
[order] => 2
[type] => BTREE
[primary] => false
[unique] => true
[null] => false
[ascending] => true
)
// here, TypeValue is a compound index with two columns, the order indicates
// the sequence in which the columns are defined in the index
*/
print_r(DB::list_columns('table'));
/*
Array
(
[name] => TypeValue
[column] => type
[order] => 1
[type] => BTREE
[primary] =>
[unique] => 1
[null] =>
[ascending] => 1
)
Array
(
[name] => TypeValue
[column] => value
[order] => 2
[type] => BTREE
[primary] =>
[unique] => 1
[null] =>
[ascending] => 1
)
*/
print_r(DB::list_columns('table','%Value%'));
|
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 データ型を PHP のデータ型の表現に変換した配列で返します。
静的 |
はい |
パラメータ |
引数 |
デフォルト |
説明 |
$type |
必須 |
SQL データ型 |
$db |
null |
データベースコネクション |
|
返り値 |
SQL データ型を PHP のデータ型の表現に変換した配列で返します。 |
例 |
/*
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 |
データベースコネクション |
|
返り値 |
bool - PDO ドライバでのみ有効。トランザクションの中なら true 、そうでなければ false を返す。 |
例 |
DB::in_transaction();
|
start_transaction($db = null)
start_transaction メソッドは、そのインスタンスでトランザクションを開始します。
静的 |
はい |
パラメータ |
引数 |
デフォルト |
説明 |
$db |
null |
データベースコネクション |
|
返り値 |
bool - PDO ドライバでのみ有効。
常に true を返すが、SQL コマンドが失敗した場合は例外を投げる。 |
例 |
DB::start_transaction();
|
commit_transaction($db = null)
commit_transaction メソッドは、未決のすべてのトランザクションクエリをコミットします。
静的 |
はい |
パラメータ |
引数 |
デフォルト |
説明 |
$db |
null |
データベースコネクション |
|
返り値 |
bool - PDO ドライバでのみ有効。
常に true を返すが、SQL コマンドが失敗した場合は例外を投げる。 |
例 |
DB::commit_transaction();
|
rollback_transaction($db = null, $rollback_all = true)
rollback_transaction メソッドは、未決のすべてのトランザクションクエリをロールバックします。
静的 |
はい |
パラメータ |
引数 |
デフォルト |
説明 |
$db |
null |
データベースコネクション。 |
$rollback_all |
true |
ロールバックモード: true - すべてのものをロールバックしトランザクションもクローズ; false - 現在のレベルのみをロールバック。 |
|
返り値 |
bool - PDO ドライバでのみ有効。
常に true を返すが、SQL コマンドが失敗した場合は例外を投げる。 |
例 |
DB::rollback_transaction();
|
トランザクションの例
// 典型的なトランザクションコードの流れ
try
{
DB::start_transaction();
// 何らかのクエリ...
DB::commit_transaction();
// クエリの結果を返す
}
catch (Exception $e)
{
// 未決のトランザクションクエリをロールバックする
DB::rollback_transaction();
throw $e;
}