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

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

DDD
リリース: 2024-12-07 04:56:10
オリジナル
875 人が閲覧しました

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート