You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP脚本中MYSQL更新发票价格语句不执行且无报错,如何解决

问题根因
  • 最核心的错误:SQL预处理语句中,值参数:code被错误包裹了反引号。MySQL中反引号仅用于标识表名、字段名这类标识符,你给参数加反引号后,MySQL会把:code识别为invoices2表的字段,而不是待绑定的传值参数,导致WHERE条件永远匹配不到数据,更新语句自然不会生效。
  • 辅助排查点:需确认代码中的$code变量在当前作用域有正确赋值,你贴出的代码中没有展示$code的定义来源,如果该变量为空或者值不符合表中code字段的存储内容,也会导致无匹配行可更新。
  • 无报错的原因:你没有开启PDO的错误抛出模式,SQL执行异常时不会输出任何提示,所以无法直观看到错误。
解决方法
  1. 首先修正SQL语句,移除:code外的反引号:
// 原错误写法
// $SQLChangePrice = $odb->prepare("UPDATE `invoices2` SET `price` = :price WHERE `code` = `:code`");
// 修正后写法
$SQLChangePrice = $odb->prepare("UPDATE `invoices2` SET `price` = :price WHERE `code` = :code");
  1. 开启PDO错误提示,方便后续排查问题,在你的数据库连接初始化代码中加入以下配置:
$odb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

开启后SQL执行出错会直接抛出异常,你可以快速定位问题点。

  1. 校验变量和执行结果,你可以在执行SQL前后加临时调试代码确认状态:
// 调试用:确认$code有有效值,没问题后删除
var_dump($code);
// 执行后输出受影响行数,大于0说明更新成功,等于0说明无匹配行
echo $SQLChangePrice->rowCount();

内容的提问来源于stack exchange,提问作者juliaroje86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:12:00