如何从 PDO 获取错误信息
使用 PDO 时,可能会遇到尽管设置了错误信息但不显示错误信息的情况错误模式为 PDO::ERRMODE_WARNING 或 PDO::ERRMODE_EXCEPTION。本文将深入探讨此行为背后的原因,并提供解决问题的解决方案。
了解错误模式设置
PDO 提供了三种错误模式选项: ::ERRMODE_SILENT、PDO::ERRMODE_WARNING 和 PDO::ERRMODE_EXCEPTION。默认情况下,PDO 在 PDO::ERRMODE_SILENT 模式下运行,该模式会抑制所有错误消息。将模式设置为 PDO::ERRMODE_WARNING 会导致 PDO 将错误消息显示为 PHP 警告,而 PDO::ERRMODE_EXCEPTION 会引发错误异常。
示例场景
在您的示例代码,您正在尝试准备无效的 SQL 语句 (@$%T$!!!) 并且无法检索任何错误消息。出现这种情况是因为默认情况下使用的模拟预准备语句在prepare() 阶段不执行语法检查。因此,只有在execute()阶段才会检测到错误。
解决方案
要解决此问题,您应该确保您的MySQL驱动程序支持本机准备好的语句。本机准备好的语句在prepare()阶段执行语法检查,使您能够及时捕获错误。要激活本机准备好的语句,请将以下行添加到您的代码中:
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
此外,您可以使用 setAttribute() 方法将错误模式设置为 PDO::ERRMODE_EXCEPTION。这将导致 PDO 抛出错误异常,从而更容易在代码中处理它们。
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
通过使用本机准备好的语句并将错误模式设置为 PDO::ERRMODE_EXCEPTION,您可以确保 PDO将提供详细的错误消息,使您能够有效地诊断和解决任何与数据库相关的问题。
以上是为什么我的 PDO 错误消息没有显示?的详细内容。更多信息请关注PHP中文网其他相关文章!