首页 > 后端开发 > php教程 > 为什么我的 PDO 错误消息没有显示?

为什么我的 PDO 错误消息没有显示?

Susan Sarandon
发布: 2024-12-24 20:45:10
原创
962 人浏览过

Why Aren't My PDO Error Messages Showing Up?

如何从 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板