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

使用PHP预准备语句执行数据库插入时出现SQL语法错误

问题原因

你代码中存在多余的非预准备SQL执行逻辑,是数据插入成功但仍报错的核心原因:

  1. 前半段预准备语句的执行流程 prepare → bind_param → execute 完全正确,所以数据可以正常插入到数据库中。
  2. 末尾这段完全多余的代码触发了报错:
if (mysqli_query($connection, $sql)) {
  echo "";
} else {
  echo "Error: " . $sql . "<br>" . mysqli_error($connection);
}

你直接调用mysqli_query()把带占位符?的原生SQL语句发送给了数据库,数据库无法识别未绑定参数的?占位符,就会返回你看到的语法错误提示。除此之外如果$_POST['postContent']为空时,$sql变量未定义,这段代码还会额外抛出变量未定义的警告。

修复方案

直接删除末尾这段多余的mysqli_query()判断代码即可。如果需要判断预准备语句的执行状态,直接在execute执行的位置做判断即可,示例如下:

// 原来的else分支里的代码修改为
mysqli_stmt_bind_param($stmt, "sss", $firstname, $lastname, $post);
if (!mysqli_stmt_execute($stmt)) {
    echo "执行错误:" . mysqli_stmt_error($stmt);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:07