PHP トラブルシューティング

[PHP] MySQLで発生した例外がキャッチできない

2015年9月6日

MySQLで例外が発生してもデフォルト状態だとPHPは何もなかったかの如く振舞うので、
これを知らないと結構ハマります・・

以下のようにすれば、MySQLで発生した例外をPHPでキャッチできます。

サンプルソース

コネクションを取得する記述の第四引数に以下を追加します。

第四引数に追加するコード


array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)

例)コネクション呼び出しの変更サンプル


//変更前
$pdo = new PDO($dsn, $user, $pwd);
 ↓
//変更後
$pdo = new PDO($dsn, $user, $pwd,
              array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));

例外は「PDOException」でキャッチできます。

例)PDOExceptionをキャッチする例


try{
  //処理
} catch (PDOException $ex) {
    print('PDOException:' . $ex->getMessage());
}

-PHP, トラブルシューティング
-