ホームページ > バックエンド開発 > PHPチュートリアル > PDO クエリがサイレントに失敗する: PDO エラー メッセージを取得するにはどうすればよいですか?

PDO クエリがサイレントに失敗する: PDO エラー メッセージを取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-19 22:11:10
オリジナル
761 人が閲覧しました

PDO Query Fails Silently: How Do I Get PDO Error Messages?

PDO に関するよくある質問: PDO クエリの失敗とエラー処理

PDO (PHP Data Objects) は、さまざまなデータベース システムと対話するための標準化されたインターフェイスを提供します。ただし、その機能の一部は PHP 開発者にとって馴染みのないものであり、プリペアド ステートメントやエラー処理に関するよくある質問につながります。この記事では、よく寄せられる質問の 1 つについて説明します:

PDO クエリは失敗しますが、エラーは表示されません。 PDO からエラー メッセージを取得する方法?

この問題を解決するには、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート