【发布时间】:2019-02-11 07:21:03
【问题描述】:
我正在使用 php 和 mssql (sql server) 为我的项目制作 API。我写了这段代码,但它给了我错误。我检查了参数和值,但看不到问题。任何帮助,将不胜感激。 错误是这样的: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\sarfeh\api\objects\user.php on line 40 我在下面的代码中标记了第 40 行。 Ans 这就是 $hash 所拥有的: $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。将 `(:first_name,:last_name,:phone,':password')` 更改为 `(:first_name,:last_name,:phone,:password)`。 -
为什么在查询中提供
':password'?请参阅此以获取更多信息w3schools.com/php/php_mysql_prepared_statements.asp
标签: php sql-server pdo