ホームページ >バックエンド開発 >PHPチュートリアル >PHP で PDO Prepare ステートメントのエラーを適切に処理する方法は?
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 サイトの他の関連記事を参照してください。