ホームページ >データベース >mysql チュートリアル >PHP で PDO prepare() を使用してクエリ準備エラーを取得して処理するにはどうすればよいですか?

PHP で PDO prepare() を使用してクエリ準備エラーを取得して処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-23 09:22:18937ブラウズ

How Can I Retrieve and Handle Query Preparation Errors Using PDO prepare() in PHP?

PDO PHP の prepare() からクエリ エラーを取得する

PDO PHP を使用する場合、エラーを処理する必要がある状況が発生する場合があります。クエリの準備中に発生します。次のコード スニペットは、prepare() メソッドを使用してクエリを準備しようとしますが、失敗した場合は、エラーに関する追加情報が必要になる場合があります。

$st = $db->prepare("SELECT * FROM c6ode");

クエリの目的の MySQL エラーを取得するには、次のようにします。特定の手順に従ってください:

  1. エラーを設定するMode:
    setAttribute() メソッドを使用して、PDO エラー報告モードを PDO::ERRMODE_EXCEPTION に設定します。この手順により、エラー発生時に PDO オブジェクトが例外をスローできるようになります。
  2. エミュレートされた準備を無効にする (オプション):
    デフォルトでは、PDO は準備されたステートメントの準備をエミュレートします。 MySQL サーバーが検証用のステートメントを実際に受信できるようにするには、PDO::ATTR_EMULATE_PREPARES を false に設定してこの機能を無効にします。

これらの手順を示すコード スニペットの例を次に示します。

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->prepare('INSERT INTO DoesNotExist (x) VALUES (?)');
?>

上記のコードを実行すると、次のような例外がスローされます。メッセージ:

SQLSTATE[42S02]: Base table or view not found: 
1146 Table 'test.doesnotexist' doesn't exist

これらの手順に従うことで、PDO PHP の prepare() メソッドを使用したクエリの準備中に発生するエラーを効率的に取得して処理できます。

以上がPHP で PDO prepare() を使用してクエリ準備エラーを取得して処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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