現在の位置: ホーム> 最新記事一覧> PDO :: Execで詳細なエラーレポートを有効にして表示する方法は、問題をトラブルシューティングしますか?

PDO :: Execで詳細なエラーレポートを有効にして表示する方法は、問題をトラブルシューティングしますか?

M66 2025-06-28

データベース操作にPHPでPDO(PHPデータオブジェクト)を使用する場合、 exec()メソッドは、挿入更新削除などの結果セットを返さないSQLステートメントを実行するためによく使用されます。この記事では、PDO :: execを使用する際に詳細なエラーレポートを有効にして表示する方法について説明します。


1。PDO:: execとは何ですか?

PDO :: ExecメソッドはSQLステートメントを実行し、影響を受ける行の数を返します。実行が失敗した場合、 falseを返します。ただし、デフォルトでは、エラーメッセージは自動的に出力されず、エラーモードを手動でオンにしてエラーの詳細を取得する必要があります。

 <?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');

$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);

if ($result === false) {
    echo "実わかりましたに失敗しました,しかし、詳細なエラーメッセージはありません。";
} else {
    echo "影響を受けています {$result} わかりました。";
}
?>

2。詳細なエラーレポートをオンにします

PDOはさまざまなエラー処理モードをサポートしています。最も一般的に使用されるモードは次のとおりです。

  • PDO :: ERRMODE_SILENT :デフォルトモード、エラーはスローされず、エラーコードのみが記録されます。

  • PDO :: ERRMODE_WARNING :PHP警告をトリガーします。

  • PDO :: errmode_exception :例外をスローします。

PDO :: errmode_exceptionを使用することをお勧めします。これにより、例外をキャッチして詳細なエラー情報を取得できます。

 <?php
try {
    $pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE users SET status = 'active' WHERE id = 10";
    $result = $pdo->exec($sql);

    echo "影響を受けています {$result} わかりました。";

} catch (PDOException $e) {
    echo "执わかりました出错: " . $e->getMessage();
}
?>

3.エラーの詳細を表示します

例外モードを使用しない場合は、次の方法でエラーメッセージを表示できます。

 <?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);

$sql = "UPDATE users SET status = 'active' WHERE id = 10";
$result = $pdo->exec($sql);

if ($result === false) {
    $errorInfo = $pdo->errorInfo();
    echo "エラーコード: " . $errorInfo[0] . "<br>";
    echo "驱动エラーコード: " . $errorInfo[1] . "<br>";
    echo "エラーメッセージ: " . $errorInfo[2];
} else {
    echo "影響を受けています {$result} わかりました。";
}
?>

errorinfo()は配列を返します。

  • [0] SQLSTATEエラーコード(標準エラーコード)

  • [1]ドライバー固有のエラーコード

  • [2]ドライバー固有のエラーメッセージ


4。実用的な提案

  • デバッグフェーズ中にPDO :: errmode_exceptionを有効にして、例外をキャッチしてエラーを見つけることをお勧めします。

  • 生産環境では、ユーザーにエラーメッセージが直接出力されないように、例外をキャッチした後にロギングを検討します。

  • データベース接続文字セットが正しく設定されていることを確認して、文字エンコードによって引き起こされるエラーを回避します。

  • Preprocessingステートメント(準備+実行)を使用して、SQL注入を防ぎ、エラートラブルシューティングも促進します。


上記の方法を使用して、 PDO :: Execを使用するときに簡単に電源を入れて詳細なエラーレポートを表示し、デバッグ効率を効果的に改善し、問題を迅速に見つけます。

  • 関連タグ:

    PDO