我正在做一个API,我用PHP和MSSQL(SQL Server)的项目。我写了这个代码,但它给我的错误回报。我检查了参数和值,但我看不到的问题。任何帮助,将不胜感激。该错误是这样的:SQLSTATE [HY093]:无效参数数:参数没有被在C中定义:\瓦帕\ WWW \ sarfeh \ API \对象\第40行我已标记在这个代码波纹管的管线40 user.php的。答这是$哈希有:$ 2Y $ 10 $ BTog4ZdjkrDsH9Hw / FjuD.myHiz61o6SOUDy4KuvoB2dGDQV9Vl4u
编辑:如果我通过密码散列没有(在11111),这个工作,但散列我得到的错误。
函数创建(){
/
// insert query
$query = "INSERT INTO " . $this->table_name . "
(first_name,last_name,phone,password_hash)
values (:first_name,:last_name,:phone,':password')";
/$this->first_name="arassssh2";
$this->last_name="arasssh2";
$this->phone="326981";
$this->password="111111";
// prepare the query
$stmt = $this->conn->prepare($query);
// bind the values
$stmt->bindParam(':first_name', $this->first_name, PDO::PARAM_STR);
$stmt->bindParam(':last_name', $this->last_name, PDO::PARAM_STR);
$stmt->bindParam(':phone', $this->phone, PDO::PARAM_STR);
$hash = password_hash($this->password, PASSWORD_BCRYPT);
$stmt->bindParam(':password', $hash); //line 40
// execute the query, also check if query was successful
if($stmt->execute()){
return true;
}
return false;
}
你并不需要'
包围你的参数名称。之前和之后'
删除:password
。更改
$query = "INSERT INTO " . $this->table_name . "
(first_name,last_name,phone,password_hash)
values (:first_name,:last_name,:phone,':password')
";
至
$query = "INSERT INTO " . $this->table_name . "
(first_name,last_name,phone,password_hash)
values (:first_name,:last_name,:phone,:password)
";
我相信line 40
应该是:
$stmt->bindParam(':password', $hash, PDO::PARAM_STR);