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

PHP实现的updateVaccine更新函数未更新数据库,问题出在哪?

问题排查方案

1. 核心语法错误:变量名不匹配

你代码里定义SQL语句的变量是$sqlUpd,但执行查询时调用的是未定义的空变量$sql,相当于给数据库传了空SQL执行,自然不会产生更新操作:

// 定义SQL的变量是$sqlUpd
$sqlUpd = "UPDATE vaccine ...";
// 执行时错误调用了不存在的$sql,这是最直接的问题
$this->con->query($sql);

把执行代码修改为$this->con->query($sqlUpd);即可修复这个基础错误。

2. 其他可能的隐藏问题

  • 字段名不匹配:检查数据库vaccine表中是否存在vaccTrade_name字段,数据库字段通常为小写下划线命名规范,若驼峰命名和实际表字段不一致会导致更新失败
  • WHERE条件无匹配数据:输出$vac->getVacc_id()的实际值,确认是否和数据库中已存在的vacc_id一致,MySQL执行UPDATE时如果没有匹配到符合条件的行,不会报错但也不会变更数据
  • 事务未提交:如果你的数据库连接关闭了自动提交配置,执行UPDATE后需要手动调用$this->con->commit()才能让变更生效
  • 缺少错误校验逻辑:你当前的代码不管SQL执行成功还是失败都会弹出更新成功的提示,逻辑完全错误,建议增加执行结果判断,示例如下:
$execRes = $this->con->query($sqlUpd);
if(!$execRes){
    die("SQL执行错误:".$this->con->error);
}
// 也可以通过影响行数判断是否有数据更新
if($this->con->affected_rows === 0){
    echo "<script>alert('无数据被更新,请检查传入参数是否正确')</script>";
}
  • 特殊字符转义缺失:如果传入的字段值包含单引号等特殊字符,会导致SQL语句拼接错误,建议改用预处理语句执行SQL,避免注入风险同时解决特殊字符报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:27:06