エラーがキャッチされなかったため、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 でこの種のデータベース エラーを表示またはキャッチするにはどうすればよいですか?