PHP PDO 错误消息作为变量发送到电子邮件中

标签 php mysql error-handling pdo error-reporting

在 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() 准备失败,我能够得到逻辑错误消息,但在执行错误(例如数组的无效参数计数)时,我似乎无法得到错误消息。

感谢所有帮助。

最佳答案

使用try/catch

try {
    $sql->execute();
} catch (PDOException $e) {
    $e->getMessage(); // This function returns the error message
}

关于PHP PDO 错误消息作为变量发送到电子邮件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15556959/

相关文章:

java - 如何将 mysql 连接器添加到 Sqoop 1.99.3

.net - 处理 COM 中的 .net 错误

error-handling - Koa错误处理: is `return` necessary?

r - R错误: I get this error message (in R) when trying to use a for loop with a if statement, missing value where TRUE/FALSE needed [duplicate]

php - 如何使用数据库 php 和 session 中的信息创建新菜单项

php - 列分隔值的正则表达式 (PHP)

php - INSERT ON DUPLICATE KEY UPDATE IF 语句

php - PDO 中的 PostgreSQL 从不报错

php - PDO 事务是否涵盖 PDO::query()?

MySQL Select from 列使用 ^ 作为分隔符