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

使用mysqli操作动态数据库时更新字段无效果求助

问题排查与解决

核心问题:字符串未加引号导致SQL语法错误

ltime是VARCHAR类型,更新时字符串值必须用单/双引号包裹。你的$r_time值是类似"2hours 50minutes"的带空格字符串,直接拼进SQL后会变成:

UPDATE users SET ltime=2hours 50minutes WHERE id=10

MySQL会将2hours和50minutes解析为无效标识符,导致语句执行失败。而mysqli的query()方法默认不会主动抛出错误,所以你看不到执行失败的提示。

修复方案

推荐使用预处理语句(彻底避免SQL注入风险,同时自动处理字符串格式):

$stmt = $childConnection->prepare("UPDATE users SET ltime=? WHERE id=?");
// "si" 表示第一个参数是字符串(s),第二个是整数(i),根据字段类型调整
$stmt->bind_param("si", $r_time, $uid);
$stmt->execute();
$stmt->close();

如果临时测试需要快速修复,也可以手动给字符串加单引号(不推荐生产环境使用,存在注入风险):

$childConnection->query("UPDATE users SET ltime='{$r_time}' WHERE id={$uid}");

额外排查技巧

执行语句后检查MySQL错误信息,能快速定位问题:

$result = $childConnection->query("UPDATE users SET ltime={$r_time} WHERE id={$uid}");
if (!$result) {
    var_dump("SQL错误: " . $childConnection->error);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:50:39