今回はPHPのPDOにてsetAttributeの利用方法を記述していきたいと思います。7月27日記事
目次
とりあえず日本語に直すとsetは動詞で「セットする、位置づける、固定する」という意味があり、Attributeは名詞で「属性」という意味があります。つまり属性をセットするというものです。PDOは様々なデータベース(MySQLやPostgresやOracle)で利用できるようになっています。その中にはデータベース固有のものも含まれていたりします。そんな中でどうPDOを動かしたいのか意図的に属性を指定するために使われたりします。メソッドみたいですが、色々な記事で関数と書かれていたりしますね。
http://php.net/manual/ja/pdo.setattribute.php
PDO::ATTR_CASE: 強制的にカラム名を指定したケースにする
PDO::CASE_LOWER: 強制的にカラム名を小文字にする
PDO::CASE_NATURAL: データベースドライバによって返されるカラム名をそのままにする
PDO::CASE_UPPER: 強制的にカラム名を大文字にする
PDO::ATTR_ERRMODE: エラーレポート
PDO::ERRMODE_SILENT: エラーコードのみ設定する
PDO::ERRMODE_WARNING: E_WARNING を発生させる
PDO::ERRMODE_EXCEPTION: 例外 を投げる
PDO::ATTR_ORACLE_NULLS (Oracle だけでなく、全てのドライバで利用可能): NULL と空文字列の変換
PDO::NULL_NATURAL: 変換しない
PDO::NULL_EMPTY_STRING: 空文字は NULL に変換される
PDO::NULL_TO_STRING: NULL は空文字に変換される
となっており、第一引数、第二引数の指定の仕方が載っています。
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//SQL文エラーはエラー吐く
第一引数にてATTR_ERRMODEを設定し、第二引数でERRMODE_WARNINGを設定し、E_WARNINGを発生させる方法が載っています。今回、
Fatal error: Call to a member function fetchColumn() on a non-object
というエラーがでたので、これを設定してあげると、SQL文エラーがあると判明しました。SQL文エラーがあった場合、その詳細を返してくれることができます。
以上