PDO (PHP Data Objects) は、さまざまなデータベース システムと対話するための標準化されたインターフェイスを提供します。ただし、その機能の一部は PHP 開発者にとって馴染みのないものであり、プリペアド ステートメントやエラー処理に関するよくある質問につながります。この記事では、よく寄せられる質問の 1 つについて説明します:
この問題を解決するには、PDO の例外処理を有効にすることが不可欠です。デフォルトでは、PDO はエラーを通常の PHP エラーとして処理しますが、これは表示されない場合があります。エラーを例外として処理するには、接続を確立するときに PDO ERRMODE 属性を PDO::ERRMODE_EXCEPTION に設定します。これにより、PDO はデータベース エラーで例外をスローし、エラー処理に使用できるようになります。
例外処理を使用して PDO 接続を設定する例を次に示します。
$dsn = "mysql:host=$host;dbname=$db;charset=utf8"; $opt = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // other options ); $pdo = new PDO($dsn, $user, $pass, $opt);
この設定では、すべてのデータベース エラーは例外としてスローされます。これらの例外は、try..catch ブロックまたは専用のエラー ハンドラーを使用してキャッチできます。キャッチされなかった例外は、サイト全体のエラー報告設定に従って、通常の PHP エラーとして機能します。
PHP エラーが確実に表示されるようにすることが重要です。運用サーバーでは、エラーを画面に表示するのではなく、ログに記録することをお勧めします。これは次の設定によって実現できます:
error_reporting(E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1);
開発サーバーでは、画面にエラーを表示する方が便利な場合があります:
error_reporting(E_ALL); ini_set('display_errors', 1);
エラー抑制演算子 (@) の使用は常に避けてください。 ) 重要なエラー情報が隠れてしまう可能性があるため、PDO ステートメントの前に追加します。
以上がPDO クエリがサイレントに失敗する: PDO エラー メッセージを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。