如何正确配置 PDO 来处理 PHP 中的准备查询错误
使用 PDO PHP 执行 SQL 查询时,正确处理错误至关重要。 prepare() 方法可以生成 MySQL 错误,但默认设置可能会阻止显示错误。
设置错误模式
捕获prepare() 方法中的错误,将 PDO 属性 PDO::ATTR_ERRMODE 设置为 PDO::ERRMODE_EXCEPTION。这会在发生错误时抛出异常。
禁用模拟
此外,禁用 PDO::ATTR_EMULATE_PREPARES 功能以确保 MySQL 立即处理语句。否则,在执行之前可能无法检测到错误。
示例
以下示例演示如何配置 PDO 以正确处理错误:
$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); try { $pdo->prepare('INSERT INTO DoesNotExist (x) VALUES (?)'); } catch (PDOException $e) { // Handle the error message $errorMessage = $e->getMessage(); }
错误输出
当尝试执行无效查询时,上面的示例将打印(或记录)错误消息:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.DoesNotExist' doesn't exist
以上是如何正确处理PHP中的PDO准备语句错误?的详细内容。更多信息请关注PHP中文网其他相关文章!