ホームページ >バックエンド開発 >PHPチュートリアル >PDO エラー メッセージが表示されないのはなぜですか?

PDO エラー メッセージが表示されないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-24 20:45:10932ブラウズ

Why Aren't My PDO Error Messages Showing Up?

PDO からエラー情報を取得する方法

PDO を使用する場合、エラー モードを PDO::ERRMODE_WARNING または PDO::ERRMODE_EXCEPTION に設定します。この記事では、この動作の背後にある理由を詳しく調べ、問題を解決するための解決策を示します。

エラー モード設定について

PDO には、エラー モードの 3 つのオプションがあります。 PDO ::ERRMODE_SILENT、PDO::ERRMODE_WARNING、および PDO::ERRMODE_EXCEPTION。デフォルトでは、PDO は PDO::ERRMODE_SILENT モードで動作し、すべてのエラー メッセージが抑制されます。モードを PDO::ERRMODE_WARNING に設定すると、PDO はエラー メッセージを PHP 警告として表示しますが、PDO::ERRMODE_EXCEPTION ではエラーの例外が発生します。

シナリオ例

コード例では、無効な SQL ステートメント (@$%T$!!!) を準備しようとしていますが、SQL ステートメントを取得できませんでした。エラーメッセージ。これは、デフォルトで使用されるエミュレートされた準備済みステートメントが、prepare() フェーズ中に構文チェックを実行しないために発生します。その結果、エラーは、execute() フェーズでのみ検出されます。

解決策

この問題を解決するには、MySQL ドライバーがネイティブのプリペアド ステートメントをサポートしていることを確認する必要があります。 。ネイティブの準備されたステートメントは、prepare() フェーズ中に構文チェックを実行するため、エラーを迅速に検出できます。ネイティブのプリペアド ステートメントをアクティブにするには、コードに次の行を追加します。

$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

さらに、setAttribute() メソッドを使用してエラー モードを PDO::ERRMODE_EXCEPTION に設定できます。これにより、PDO はエラーに対して例外をスローするようになり、コードでのエラーの処理が容易になります。

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

ネイティブのプリペアド ステートメントを採用し、エラー モードを PDO::ERRMODE_EXCEPTION に設定することで、PDO が詳細なエラー メッセージが表示されるため、データベース関連の問題を効果的に診断して解決できます。

以上がPDO エラー メッセージが表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。