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;
}