SQLSTATE [HY093]错误
问题描述:
我试图运行PHP如下:SQLSTATE [HY093]错误
$stmt = $db_con->prepare("SELECT * FROM users WHERE email=:email");
$stmt->execute(array(":email"=>$user_email));
$count = $stmt->rowCount();
if($count==0){
$stmt = $db_con->prepare("INSERT INTO users(username,email,password,ip)VALUES(:uname, :email, :password, :ip)");
$stmt->bindParam(":username",$username);
$stmt->bindParam(":email",$useremail);
$stmt->bindParam(":password",$hasheduserpassword);
$stmt->bindParam(":ip",$userip);
其结果是,我得到以下错误:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
答
在你定义UNAME而查询设置一个名为username参数 尝试
$stmt = $db_con->prepare("INSERT INTO users(username,email,password,ip)VALUES(:username, :email, :password, :ip)");
答
你error
就在这里
$stmt = $db_con->prepare("INSERT INTO users(username,email,password,ip)VALUES(:uname, :email, :password, :ip)");
// $stmt->bindParam(":username",$username);// this shoud be uname
$stmt->bindParam(":uname",$username);
答
错误是在这里:
VALUES(:uname,
$stmt->bindParam(":username",$username);
MySQL是寻找:username
,但它无法找到它,因为你把它命名为:uname
。
两者必须匹配。