【问题标题】:How to debug PDO script?如何调试 PDO 脚本?
【发布时间】:2021-04-05 15:35:29
【问题描述】:

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

【问题讨论】:

  • 你有两个电话给$stmt-&gt;execute()
  • 你在 cron 作业中发出 HTML 也很奇怪。

标签: php mysql sql pdo


【解决方案1】:

始终检查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

【讨论】:

    猜你喜欢
    • 2010-09-15
    • 2015-07-23
    • 2017-08-24
    • 2014-05-14
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多