4

PHP で MySQL から PDO に切り替えます。以前は、クエリが実行され、何らかの理由で実行されなかった場合、次のように本文に mysql_error() メッセージを含む電子メールを自分自身に送信できました。

$query = "SELECT dogs FROM animals";
$res = mysql_query($query);

if (!$res) {
    $error = "Error Message: " . mysql_error();
    mail("my@email.com","Database Error",$error);
}

それから、ウェブサイトのデータベースに何か問題があると、emil で警告を受けました。

私のPDO設定は次のとおりです。

setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

PDO接続自体にtry catchがありますが、次のように準備と実行のエラーメッセージを取得したいと思います:

$query = "SELECT cats FROM animals";
$sql = $pdo->prepare($query);

if (!$sql->execute()) {
  $error = "Error Message: " . (pdo error message here);
  mail("my@email.com","Database Error",$error);
}

電子メールの件名に PDO エラー メッセージを割り当てる方法についてのアイデアはありますか? 準備が errorInfo() を使用して失敗した場合、論理エラー メッセージを取得できますが、実行エラー (配列の無効なパラメーター カウントなど) では、エラー メッセージを取得できないようです。

助けてくれてありがとう。

4

2 に答える 2

6

トライ/キャッチを使う

try {
    $sql->execute();
} catch (PDOException $e) {
    $e->getMessage(); // This function returns the error message
}
于 2013-03-21T20:05:36.900 に答える
0

次を使用できます。

$query = "SELECT cats FROM animals";
$sql = $pdo->prepare($query);

if (!$sql->execute()) {
  $arr = $sql->errorInfo();
  $error = print_r($arr, true);

  mail("my@email.com","Database Error",$error);
}
于 2013-03-21T20:10:57.357 に答える