今回はPHPのPDOにてsetAttributeの利用方法を記述していきたいと思います。7月27日記事

目次





setAttributeとは

とりあえず日本語に直すとsetは動詞で「セットする、位置づける、固定する」という意味があり、Attributeは名詞で「属性」という意味があります。つまり属性をセットするというものです。PDOは様々なデータベース(MySQLやPostgresやOracle)で利用できるようになっています。その中にはデータベース固有のものも含まれていたりします。そんな中でどうPDOを動かしたいのか意図的に属性を指定するために使われたりします。メソッドみたいですが、色々な記事で関数と書かれていたりしますね。

PHPマニュアルにて

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 は空文字に変換される


となっており、第一引数、第二引数の指定の仕方が載っています。

使い方例

SQL文のエラーを吐く

$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文エラーがあった場合、その詳細を返してくれることができます。

以上

最終更新:2015年07月27日 11:04