データベース操作にPHPでPDO(PHPデータオブジェクト)を使用する場合、 exec()メソッドは、挿入、更新、削除などの結果セットを返さないSQLステートメントを実行するためによく使用されます。この記事では、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} わかりました。";
}
?>
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();
}
?>
例外モードを使用しない場合は、次の方法でエラーメッセージを表示できます。
<?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]ドライバー固有のエラーメッセージ
デバッグフェーズ中にPDO :: errmode_exceptionを有効にして、例外をキャッチしてエラーを見つけることをお勧めします。
生産環境では、ユーザーにエラーメッセージが直接出力されないように、例外をキャッチした後にロギングを検討します。
データベース接続文字セットが正しく設定されていることを確認して、文字エンコードによって引き起こされるエラーを回避します。
Preprocessingステートメント(準備+実行)を使用して、SQL注入を防ぎ、エラートラブルシューティングも促進します。
上記の方法を使用して、 PDO :: Execを使用するときに簡単に電源を入れて詳細なエラーレポートを表示し、デバッグ効率を効果的に改善し、問題を迅速に見つけます。
関連タグ:
PDO