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());
}