pdo-oci
PDO::ATTR_EMULATE_PREPARES => true, // turn on emulation mode for "real" prepared statements
PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT, //do not throw exception
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // make the default fetch be an associative array
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8 COLLATE utf8_general_ci",
PDO::ATTR_AUTOCOMMIT => false, //Whether to autocommit every single statement
equal to
PDO::ATTR_EMULATE_PREPARES
データベース側が持つ「プリペアドステートメント」という機能のエミュレーションをPDO側で行うかどうかを設定します.
- PHP5.1のデフォルトは
false
- PHP5.2以降のデフォルトは
true
この設定で,いくつかPDOの挙動に違いが表れます.
- プリペアドステートメントのためにデータベースサーバと通信する必要が無くなるため,エミュレーションを行ったほうがパフォーマンスは向上する.
- 存在しないテーブル名やカラム名をSQL文に持つプリペアドステートメントを発行したとき,エミュレーションOFFの場合はすぐにエラーが発生するが,エミュレーションONの場合は実際にクエリを実行するまでエラーが発生するかどうかわからない.
- エミュレーションがONの場合のみ,
;
区切りで複数のSQL文を1つのクエリで実行する
foreach文でキーと値を取り出す
foreach (配列変数 as キー変数 => 値変数){ 実行する処理1; 実行する処理2; }