php - 如何调试 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 手动执行时,每个查询都可以正常工作。通过此脚本执行时,尽管消息显示“删除成功”,但它不起作用。我想了解实际情况的最佳方法是从数据库中读取响应,但我不知道该怎么做。你能帮我吗?:-) 谢谢
解决方案
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
推荐阅读
- oracle - Update PL/SQL block inside procedure, which I'm using in web project, is taking too long
- scala - Spark 2.X throwing io.netty.buffer.PooledByteBufAllocator.metric()Lio/netty/buffer/PooledByteBufAllocatorMetric
- javascript - Fire onKeyPress Event passing parameters using JQuery does not work
- python-3.x - Averaging data while merging
- git - Data is gone after git branch
- python-3.x - How to subscribe to events in sawtooth hyperledger?
- ionic-framework - Unable to override scss in ionic3
- javascript - Select2 items show by if clause
- java - Benefits of internal iterations
- c - How to print result in order even if using threads in c?