▶ プログラム関連
PDO Managerクラス
DBにアクセスするためのPDOラッパークラス
DB接続先指定
$dbConfig = array(
'default' => array(
'dsn' => 'mysql:dbname=xxxxxx;host=localhost;charset=utf8',
'user' => 'xxxxxx',
'pass' => 'xxxxxx',
),
'master' => array(
'dsn' => 'mysql:dbname=xxxxxx;host=localhost;charset=utf8',
'user' => 'xxxxxx',
'pass' => 'xxxxxx',
),
);
\Util\DB::$config = $dbConfig;
初期化(シングルトン)
設定名を引数で指定して初期化します。
$db = \Util\DB::init(); // 'default' 設定を使用します
$db = \Util\DB::init('master'); // 'master' 設定を使用します
DBクローズ(コネクション切断)
明示的に接続名を指定してクローズします。
$db::close(); // 'default' 設定コネクションをクローズします
\Util\DB::close(); // 別記載
$db::close('master'); // 'master' 設定コネクションをクローズします
\Util\DB::close('master'); // 別記載
シングルトンを使用しない場合は、以下のように new を用いてオブジェクトを生成します。
$db = new \Util\DB('slave');
シングルトンを使用しない場合は、以下のように PDO でコネクションをクローズします。
$db->dbh = null;
SQL実行の流れ
(1) SQL定義
$db->sql('SELECT * FROM memo WHERE name=:name AND flag=:flag');
(2-1) SQLパラメータ設定(通常のやり方)
$db->set('name', 'tatenosystem'); $db->set('flag', 1);
(2-2) SQLパラメータ設定(連想配列で一度に設定)
$params = array(); $params['name'] ='tatenosystem'; $params['flag'] = 1; $db->set( $params );
(2-3) SQL INコマンド(INに設定する場合)
$db->sql('SELECT * FROM memo WHERE name IN (:names)'); $db->setIn( 'names', array('tatenosystem', 'mahata', 'hoge') ); // IN の場合は setIn メソッド。配列を設定
(3-1)SQL実行(1レコード取得)
$item = $db->execFetchOne(); var_dump( $item );
(3-2) SQL実行(全レコード取得)
$items = $db->execFetchAll(); var_dump( $items );
基本的な使い方
-SELECT
$db->setSql('SELECT * FROM memo WHERE id = :id');
$db->set('id', 35);
$data = $db->execFetchOne(); // 戻り値は1レコード(配列)。結果がなかった場合は空配列
-SELECT
$db->setSql('SELECT * FROM memo WHERE name = :name OR id = :id');
$db->set('name', 'tatenosystem');
$db->set('id', 35);
$data = $db->execFetchAll(); // 戻り値は全レコード(2次元配列)。結果がなかった場合は空配列
-UPADTE
$db->setSql('UPDATE memo SET name = :name WHERE id = :id');
$db->set('name', 'tatenosystem');
$db->set('id', 35);
$rtn = $db->exec(); // exec() の戻り値は更新レコード件数
-INSERT
$db->setSql('INSERT INTO memo (name, age) VALUES (:name, :age)');
$db->set('name', 'baby');
$db->set('age', 2);
$rtn = $db->exec(); // exec() の戻り値は更新レコード件数
FETCH 処理
-SELECT実行(1レコードずつ取得)
$db->exec();
while( true ) {
$item = $db->fetch();
if( empty($item) ) break; // 取得終了時は空配列となる
var_dump( $item );
}
トランザクション機能
- トランザクションの開始
$rtn = $db->transaction();
成功した場合に true を、失敗した場合に false を返します。
- コミット
$rtn = $db->commit();
成功した場合に true を、失敗した場合に false を返します。
- ロールバック
$rtn = $db->rollBack();
成功した場合に true を、失敗した場合に false を返します。
最終行の取得(最終INSERT id の取得)
$id = $db->lastInsertId();
※PDO lastInsertId()のラッパー関数