4

エラーがキャッチされなかったため、PDO を使用して問題が発生しました。

コードはシンプルで問題なく動作します。混乱を避けるためにサンプルを含めます。

$sql = 'INSERT INTO somedatetable (something) 
        VALUES (:something) 
        ON DUPLICATE KEY UPDATE something=:something';

$values = array(":something" => $something);

try {
    $stmt = $dbh->prepare($sql);    
    $stmt->execute($values);    
} catch (PDOException $e) {
    echo "Error: " . $e->getMessage() . "<br />\n";
}

コードは正常に動作しますが、新しいモジュールで作業しているときに、レコードが追加または変更されず、エラーが検出されないという問題に遭遇しました。

$stmt返さfalseれましたが、エラーを見つける理由や方法がわかりませんでした。

結局、解決策は簡単でした。テーブルへの書き込み権限を持たない限られた MySQL ユーザーを使用していました。これらのエラーは、mysql を使用すると常にすぐに表示されますが、PDO を使用すると、それらに到達する方法がわかりません。

PHP / PDO でこの種のデータベース エラーを表示またはキャッチするにはどうすればよいですか?

4

1 に答える 1

11

PDO::errorInfo()またPDOStatement->errorInfo()

例外については、PDOの「エラーとエラー処理」のドキュメントを確認してください。デフォルトでは例外はスローされないため、例外を有効にすることをお勧めします。

同様に参照してください:

于 2009-03-27T18:00:54.783 に答える