ホームページ >バックエンド開発 >PHPチュートリアル >PDO クエリでエラー メッセージが表示されないのはなぜですか?

PDO クエリでエラー メッセージが表示されないのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 04:54:15324ブラウズ

Why Aren't My PDO Queries Showing Error Messages?

PDO リファレンス: 一般的なデータベース接続エラーの解決

概要

PDO (PHP データ オブジェクト) ) は堅牢なデータベース対話を提供しますが、その特定の機能が原因でユーザーはエラーに遭遇することがよくあります。この記事は、最も一般的な問題の 1 つである、PDO クエリ中にエラー メッセージを取得できないという問題に対処することを目的としています。

エラー メッセージなしのクエリ失敗

PDO クエリの実行時失敗しても、エラー メッセージがすぐには分からない場合があります。エラーの可視性を有効にするには、PDO エラー モードを PDO::ERRMODE_EXCEPTION に設定する必要があります。例外はスタック トレースを提供し、try..catch ブロックを使用して処理できます。

例:

$dsn = "mysql:host=$host;dbname=$db;charset=utf8";
$opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
$pdo = new PDO($dsn, $user, $pass, $opt);

エラーの表示

さらに、エラーを表示するにはエラー報告設定を構成する必要があります。ライブ サイトの場合は、エラー ログを有効にします。一方、ローカル開発の場合は、エラーが画面に表示されます:

ライブ サイト:

error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);

ローカル開発:

error_reporting(E_ALL);
ini_set('display_errors', 1);

エラーの回避抑制

PDO ステートメントの前にエラー抑制演算子 (@) を使用しないでください。

不必要な try..catch ブロックの回避

キャッチされない例外カスタム エラー処理を必要とせずに、貴重なエラー情報を提供します。 try..catch は、トランザクションのロールバックなど、エラーを処理する場合にのみ使用してください。

以上がPDO クエリでエラー メッセージが表示されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。