首页 > 解决方案 > 如何调试 PDO 脚本?

问题描述

多亏了cron,我的服务器每天都执行一个PHP脚本。此脚本包含 PDO 查询,用于从我的 MySQL 数据库中添加、编辑和删除数据。该脚本没有按预期工作,尤其是查询的最后一部分应该删除一些行:

    $stmt = $conn->prepare("DELETE FROM `mkgaction` WHERE score IS NULL");
    $stmt->execute();
    if($stmt->execute()) {
        echo "delete succeeded<br>";
    } else {
        echo "delete failed<br>";
    }

当通过 PHPMyAdmin 手动执行时,每个查询都可以正常工作。通过此脚本执行时,尽管消息显示“删除成功”,但它不起作用。我想了解实际情况的最佳方法是从数据库中读取响应,但我不知道该怎么做。你能帮我吗?:-) 谢谢

标签: phpmysqlsqlpdo

解决方案


prepare()始终检查和的返回值execute()。如果出现问题,它们会返回布尔值false 。

然后您应该检查具体错误并报告该错误以帮助调试。

$stmt = $conn->prepare("DELETE FROM `mkgaction` WHERE score IS NULL");
if ($stmt === false) {
    die(print_r($conn->errorInfo(), true));
}
$ok = $stmt->execute();
if ($ok === false) {
    die(print_r($stmt->errorInfo(), true));
}
echo "delete succeeded<br>";

诚然,检查每个调用都会产生大量重复代码。如果您愿意编写代码来处理异常,则另一种方法是启用异常。见https://www.php.net/manual/en/pdo.error-handling.php


推荐阅读