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

PDO报错SQLSTATE[HY093]:绑定变量数与令牌数不匹配问题求助

解决PDO报错:SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

你的问题核心是SQL语句里的占位符被单引号包裹了。PDO的命名占位符不需要加引号,加了之后数据库会把:userName这类内容当成普通字符串字面量,而非参数占位符——这就导致你的SQL语句实际上没有需要绑定的参数,但你却绑定了3个变量,最终触发参数数量不匹配的错误。

修正后的代码如下:

$query="INSERT INTO users (username,pwd,email) values(:userName,:pwd,:Email)";
$stmt=$pdo->prepare($query);

$stmt->bindParam(':userName',$username);
$stmt->bindParam(':pwd',$password);
$stmt->bindParam(':Email',$email);

$stmt->execute();

也可以用更简洁的写法,直接将参数数组传给execute:

$query="INSERT INTO users (username,pwd,email) values(:userName,:pwd,:Email)";
$stmt=$pdo->prepare($query);

$stmt->execute([
    ':userName' => $username,
    ':pwd' => $password,
    ':Email' => $email
]);

补充说明:PDO的占位符(无论命名还是问号类型)都不需要手动加引号,PDO会自动处理字符串的转义和引号包裹,同时能有效避免SQL注入问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:42:01