@ PHP

CRUD:データベース接続オプション

データベース接続時の挙動を決める情報のことを接続オプションといいます。

接続オプションは、PDO クラスをインスタンス化するタイミングで連想配列「オプション名 => 設定値」の形式で指定するか、setAttribute() メッソドを使って個別に設定できます。

dbconnect.php

<?php

try {
    $dbh = new PDO(
        'mysql:host=localhost; dbname=shop; charset=utf8',
        'user',
        'password',
        [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false,
        ]
    );
} catch (PDOException $e) {
    exit('ERR! : ' . $e->getMessage());
}

dbconnect.php で設定しているオプションは次のとおりです。目的によっては不要なものも有ります。

PDO::ATTR_ERRMODE

接続中にエラーが発生した場合、これをどのように通知するかを決めます。

利用可能な通常の属性は以下の一覧の通りです

  • PDO::ERRMODE_SILENT: エラーコードのみ設定する。エラー出力は行いません。この設定でエラーを確認したい場合は、PDO::errorCode() メッソドを使用してください。
  • PDO::ERRMODE_WARNING: E_WARNING を発生させる
  • PDO::ERRMODE_EXCEPTION: 例外 を投げる。

PDO::ATTR_DEFAULT_FETCH_MODE

: デフォルトのフェッチモードを設定します。

  • PDO::FETCH_ASSOC: は、結果セットに 返された際のカラム名で添字を付けた配列を返します。
  • PDO::FETCH_BOTH (デフォルト): 結果セットに返された際のカラム名と 0 で始まるカラム番号で添字を付けた配列を返します。
  • PDO::FETCH_BOUND: TRUE を返し、結果セットのカラムの値を PDOStatement::bindColumn() メソッドでバインドされた PHP 変数に代入します。
  • PDO::FETCH_CLASS: 結果セットのカラムがクラス内の名前付けされたプロパティに マッピングされている、要求されたクラスの新規インスタンスを返します。
  • PDO::FETCH_INTO: 結果セットのカラムがクラス内の名前付けされたプロパティに マッピングされている要求された既存インスタンスを更新します。
  • PDO::FETCH_LAZY: PDO::FETCH_BOTH とPDO::FETCH_OBJの 組合せで、オブジェクト変数名を作成します。
  • PDO::FETCH_NAMED: PDO::FETCH_ASSOC と同じ形式の配列を返します。 ただし、同じ名前のカラムが複数あった場合は、そのキーが指す値は、 同じ名前のカラムのすべての値を含む配列になります。
  • PDO::FETCH_NUM: 結果セットに返された際の 0 から始まるカラム番号を添字とする配列を返します。
  • PDO::FETCH_OBJ: 結果セットに返された際のカラム名と同名のプロパティを有する 匿名のオブジェクトを返します。
  • PDO::FETCH_PROPS_LATE: PDO::FETCH_CLASS とともに使用すると、 まずクラスのコンストラクタを呼び出してから、カラムの値をプロパティに代入します。

PDO::ATTR_EMULATE_PREPARES

MySQLネイティブのプリペアドステートメント機能の代わりにエミュレートしたものを使う設定です。

PHP マニュアル:PDO::setAttribute