更新查询脚本故障求助:执行后无法更新数据库
修正你的Stock表更新查询问题
我来帮你排查下这个更新语句的问题,主要有几个语法和逻辑上的错误需要修正:
- 字段名不匹配:你的表定义里是
current_owner字段,但脚本里写的是owner_id,数据库找不到这个字段,自然无法完成更新。 - UPDATE语法错误:你用了
UPDATE stock (SELECT ...)这种不符合MySQL规范的写法,正确的UPDATE语句结构应该是UPDATE 表名 SET 字段=值 WHERE 条件 [LIMIT 条数]。 - LIMIT语法错误:
LIMIT = ?是错误的写法,不需要等号,直接写LIMIT ?即可。
根据你的需求(将当前所有者为$present_owner的$share_count条记录,更新为新所有者$new_owner),正确的查询脚本应该是这样的:
$db->query("UPDATE stock SET current_owner = ? WHERE current_owner = ? LIMIT ?", array($new_owner, $present_owner, $share_count));
补充说明:
- 这个语句会筛选出所有
current_owner等于$present_owner的记录,然后只更新前$share_count条的current_owner为$new_owner,完全匹配你的需求。 - 如果你的
update_at字段需要记录更新时间,可以在SET子句里加上自动更新的逻辑,比如:
$db->query("UPDATE stock SET current_owner = ?, update_at = NOW() WHERE current_owner = ? LIMIT ?", array($new_owner, $present_owner, $share_count));
- 你用参数绑定的方式来构建查询是非常好的习惯,能有效防止SQL注入,继续保持。
内容的提问来源于stack exchange,提问作者Muhammad Khan
相关产品推荐
相关产品推荐

