これは、SQLデバッグに関する最も一般的な神話です。 「エラーが発生したかどうかを判断するには、準備後にクエリを確認する必要があります」。事実は、あなたはしません 、理由をお話しします。
クエリが準備されると、プレースホルダーは有効な文字列/整数と見なすことができます。 。何が入っていてもかまいません。
また、PDOを正しく設定すると、詳細なPDOException
が表示されます。 発生したエラーの詳細と、エラーが発生した場所の完全なバックトレースに加えて、MySQLからエラー文字列を取得するため、構文エラーを非常に簡単に見つけることができます。
PDO例外を有効にし、エミュレートされた準備を無効にするには:
$pdo = new PDO("mysql:host=localhost;dbname=database_name", "user", "password");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);