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

绑定预处理语句参数时提示变量与参数数量不匹配的问题求助

问题解决:预处理语句参数数量不匹配错误

你的问题出在两次调用bind_param(),而非一次性绑定所有参数。SQL语句里有2个占位符?,但分开调用bind_param会导致参数绑定不完整,触发该错误。另外,代码里未从$_GET['token']获取$token变量,这也会导致后续绑定失败,需要补上。

修正后的代码:

if (!isset($_GET['token'])) {
    echo "<p class='passed'>Link passed.</p>";
} else {
    $stmt = $conn->prepare("UPDATE database SET is_verified = ? WHERE token = ?");
    $status = 1;
    $token = $_GET['token']; // 补上获取token的代码
    // 一次性绑定所有参数:第一个参数是类型字符串(i=int,s=string),顺序和SQL占位符对应
    $stmt->bind_param("is", $status, $token);
    $res = $stmt->execute();
    if ($res) {
        echo "<p class='NewsStat'>You confirmed.</p>";
    }
}

关键说明:

  • bind_param()的第一个参数是所有参数的类型标识字符串,比如这里"is"表示第一个参数是整数(对应$status),第二个是字符串(对应$token)。
  • 类型标识的顺序必须和SQL语句中?的顺序完全对应,变量也要按顺序跟上。
  • 必须确保$token变量被正确赋值,否则即使绑定了也会出现参数缺失的问题。

内容的提问来源于stack exchange,提问作者Michaël Thönnissen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:06:00