PDO を使用してクエリを準備する場合、関連するエラーを取得することが不可欠な場合があります。これは、デバッグ目的や予期しないデータベース インタラクションの処理に特に役立ちます。
次の PHP コード スニペットを考えてみましょう。
$st = $db->prepare("SELECT * FROM c6ode");
この場合、クエリエラー (存在しないテーブルなど) が含まれているため、それらを取得して処理する方法が不明な場合があります。エラー。
prepare() メソッドからクエリ エラーを取得するには、エラー時に例外をスローするように PDO を構成する必要があります。これは、PDO::ATTR_ERRMODE 属性を PDO::ERRMODE_EXCEPTION に設定することで実現できます。
さらに、MySQL サーバーが準備段階でクエリを検証できるようにするには、PDO::ATTR_EMULATE_PREPARES 機能を無効にすることが重要です。 。これにより、サーバーがクエリの検証を実行まで遅らせることがなくなります。
例として、次のコードを考えてみます。
<?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 を適切に構成すると、クエリ エラーを効果的にキャプチャして処理できるようになり、効率的なデバッグとデータベースが確保されます。インタラクション。
以上がPDO の `prepare()` メソッドからクエリ エラーを取得して処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。