使用 PDO 准备查询时,检索任何相关错误可能非常重要。这对于调试目的或处理意外的数据库交互特别有用。
考虑以下 PHP 代码片段:
$st = $db->prepare("SELECT * FROM c6ode");
在这种情况下,如果查询包含任何错误(例如不存在的表),可能不确定如何检索和处理这些错误。
要从prepare()方法检索查询错误,需要配置PDO以在错误时抛出异常。这是通过将 PDO::ATTR_ERRMODE 属性设置为 PDO::ERRMODE_EXCEPTION 来实现的。
此外,为了确保 MySQL 服务器在准备阶段验证查询,禁用 PDO::ATTR_EMULATE_PREPARES 功能至关重要。这可以防止服务器延迟查询验证直到执行。
为了说明这一点,请考虑以下代码:
<?php $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $pdo->prepare('INSERT INTO DoesNotExist (x) VALUES (?)');
执行此代码时,将引发异常,其中包含以下详细信息:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.doesnotexist' doesn't exist
通过适当配置 PDO,可以有效地捕获和处理查询错误,确保高效的调试和数据库交互。
以上是如何从 PDO 的'prepare()”方法检索和处理查询错误?的详细内容。更多信息请关注PHP中文网其他相关文章!