ホームページ >バックエンド開発 >PHPチュートリアル >PHP で PDO Prepare ステートメントのエラーを適切に処理する方法は?

PHP で PDO Prepare ステートメントのエラーを適切に処理する方法は?

DDD
DDDオリジナル
2024-12-07 04:56:10810ブラウズ

How to Properly Handle PDO Prepare Statement Errors in PHP?

PHP でクエリ準備エラーを処理するように PDO を適切に設定する方法

PDO PHP を使用して SQL クエリを実行する場合、エラーを適切に処理することが重要です。 prepare() メソッドは MySQL エラーを生成する可能性がありますが、デフォルト設定ではエラーが表示されない場合があります。

エラー モードの設定

prepare() メソッドでエラーをキャプチャするには、PDO 属性 PDO::ATTR_ERRMODE を PDO::ERRMODE_EXCEPTION に設定します。これにより、エラーが発生したときに例外がスローされます。

エミュレーションの無効化

さらに、MySQL がステートメントを即座に処理できるように、PDO::ATTR_EMULATE_PREPARES 機能を無効にします。そうしないと、実行するまでエラーが検出されない可能性があります。

次の例は、エラーを適切に処理するように PDO を構成する方法を示しています。

$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);

try {
    $pdo->prepare('INSERT INTO DoesNotExist (x) VALUES (?)');
} catch (PDOException $e) {
    // Handle the error message
    $errorMessage = $e->getMessage();
}

エラー出力

無効なクエリを実行しようとすると、上記の例では、次のエラー メッセージが出力 (またはログ) されます:

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

以上がPHP で PDO Prepare ステートメントのエラーを適切に処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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