PHP の PDO prepare() からクエリ エラーを取得する
PDO PHP で prepare() メソッドを使用する場合データベース クエリを準備するには、潜在的なエラーを処理することが不可欠です。質問で引用されている元の例では、クエリ エラーを効果的に処理できませんでした。
クエリ エラーを正しく確認するには、次の手順に従います。
1. PDO エラー処理の構成:
setAttribute() メソッドを使用して、PDO エラー処理モードを PDO::ERRMODE_EXCEPTION に設定します:
$st = $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
これは、データベース エラーに対して例外をスローするように PDO に指示します。識別と処理が容易になります。
2.エミュレーションを無効にする:
値を false に設定して、PDO::ATTR_EMULATE_PREPARES 機能を無効にします。
$st = $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
これにより、 PHP エミュレーション層。MySQL サーバーがクエリの直後に解析することを保証します。 prepare()を呼び出します。
3.例外のキャッチ:
prepare() メソッドがエラーの例外をスローするようになったため、それらを処理するには「try-catch」ブロックを使用します:
try { $st = $db->prepare('INSERT INTO DoesNotExist (x) VALUES (?)'); } catch (PDOException $e) { echo "Error: " . $e->getMessage(); }
このコードは、存在しないテーブル DoesNotExist が存在しない場合に次のエラー メッセージを出力します。参照先:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.doesnotexist' doesn't exist
以上がPHP で PDO prepare() を使用するときにクエリ エラーを効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。