2010年 11月 15日
// **********************************************************
// 接続
// **********************************************************
$Cn = new PDO(
“odbc:Driver=$strDriver;Server=$strTarget;” .
“Database=$strDB;Uid=$strUser;Pwd=$strPass;”);
// デフォルトエラーモード
$Cn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
// 存在しない列を更新
$Query = “update [社員マスタ] set [生年月] = ‘2005/01/01’”;
$Query .= ” where [社員コード] = ‘0001’”;
$ret = $Cn->exec( $Query );
if ($ret===false) {
print_r( $Cn->errorInfo() );
}
// エラー表示( デバッグに有効 )
// 抑制する場合は、@$Cn->exec( $Query );
$Cn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
// 存在しない列を更新
$Query = “update [社員マスタ] set [生年月] = ‘2005/01/01’”;
$Query .= ” where [社員コード] = ‘0001’”;
$ret = $Cn->exec( $Query );
if ($ret===false) {
print_r( $Cn->errorInfo() );
}
// try catch 用
$Cn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
// 存在しない列を更新
$Query = “update [社員マスタ] set [生年月] = ‘2005/01/01’”;
$Query .= ” where [社員コード] = ‘0001’”;
try {
$ret = $Cn->exec( $Query );
}
catch( PDOException $e ) {
print $e->getMessage();
}
$Cn = null;
PHP : PDO のエラー処理
PDO エラー処理には3通りあります。
最初はその名の通り、エラーが起きてもなにも起こりません。
そのまま実行されますが、エラー情報は設定されていますし、戻り値も正しく返ります。
一番簡単でバグさえなければ問題は発生しにくいですが、
複雑な問題を確認する為には戻り値とメッセージを常に確認して正しい
エラー処理を行う必要があります
二つ目は、さらにPHPの通常のエラーメッセージを出力させるようにした
バージョンです。初期段階のデバッグに有効です
三つ目は、try 〜 catch を使うようにしたものですが、慣れていないと
扱いは少し難しくなります。しかし、例外によりスクリプトが終了した際
には、トランザクションは自動的に ロールバックされるそうです。
1年前 |
固定リンク | 2010年 11月 15日 |
