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

SQL语句execute执行成功的判定:更新0行是否属于失败?

关于mysqli execute()方法执行成功的判定

首先纠正一个小误区:mysqli的execute()方法返回的是布尔值true/false,不是数字1/0(你可能是把返回值和其他场景混淆了)。

核心结论:execute()的成功只代表SQL语句被数据库服务器正常执行完成,和是否有行被修改/查询到数据完全无关。

具体来说:

  • 返回false的情况:数据库无法执行这条语句,比如SQL语法错误、数据库连接中断、没有操作该表的权限、表/字段不存在等,这类导致语句执行终止的错误场景。
  • 返回true的情况:只要数据库能正常处理这条语句,哪怕你的UPDATE语句没有匹配到任何行(比如你示例中id=5的记录不存在)、DELETE没删到数据、SELECT查不到结果,都属于执行成功,会返回true。

如果需要确认UPDATE是否真的修改了数据,不能只看execute()的返回值,要在它返回true后,调用$stmt->affected_rows来获取受影响的行数:

$result = $stmt->execute();
if ($result) {
    if ($stmt->affected_rows > 0) {
        // 有行被成功更新
    } else {
        // 语句执行成功,但没有匹配到任何行,无更新操作
    }
} else {
    // 语句执行失败,比如语法错误、权限问题等
}

内容的提问来源于stack exchange,提问作者O'con

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:10:04