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

MySQL中正常执行的UPDATE语句在PHP中报错的问题排查

问题:PHP执行多语句SQL报错,直接在MySQL执行正常

问题场景

直接在MySQL中执行多语句SQL可正常生效,但通过PHP执行时触发语法错误。

执行的SQL语句

UPDATE names SET rsvp_status = '1' WHERE name_id = '13'; UPDATE names SET rsvp_status = '1' WHERE name_id = '15';

PHP执行时的错误信息

Error: UPDATE names SET rsvp_status = '1' WHERE name_id = '13'; UPDATE names SET rsvp_status = '1' WHERE name_id = '15';
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE names SET rsvp_status = '1' WHERE name_id = '15'' at line 1

用到的PHP代码

$query = "UPDATE names SET rsvp_status = '1' WHERE name_id = '13'; UPDATE names SET rsvp_status = '1' WHERE name_id = '15';";

$db = $conn;
$execute = mysqli_query($db, $query);
if ($execute==true) {
  $success = 1;
} else {
  echo  "Error: " . $query . "<br>" . mysqli_error($db);
}

names表结构

name_idnamersvp_status
13John0
15David0
17Bill1

原因及解决方案

报错核心原因是:mysqli_query默认仅支持单条SQL语句执行,它会把第二个UPDATE判定为语法错误。

方案1:拆分SQL为两条单独执行(推荐)

将原语句拆分为独立的UPDATE,分别调用mysqli_query执行,这种方式更安全,也符合mysqli常规用法:

// 执行第一条更新
$query1 = "UPDATE names SET rsvp_status = '1' WHERE name_id = '13';";
mysqli_query($db, $query1);
// 执行第二条更新
$query2 = "UPDATE names SET rsvp_status = '1' WHERE name_id = '15';";
mysqli_query($db, $query2);

方案2:使用mysqli_multi_query执行多语句

如果必须执行多语句,可使用mysqli_multi_query,但需注意该方式存在SQL注入风险,必须确保语句完全可信:

$query = "UPDATE names SET rsvp_status = '1' WHERE name_id = '13'; UPDATE names SET rsvp_status = '1' WHERE name_id = '15';";
$execute = mysqli_multi_query($db, $query);

// 循环获取所有语句的执行结果,避免后续数据库操作异常
do {
    if ($result = mysqli_store_result($db)) {
        mysqli_free_result($result);
    }
} while (mysqli_next_result($db));

if ($execute) {
    $success = 1;
} else {
    echo "Error: " . $query . "<br>" . mysqli_error($db);
}

额外说明:name_id为整数类型,SQL中可去掉单引号,写成WHERE name_id = 13更规范,不过这并非本次报错的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:05:18