PHP的错误:SQLSTATE [HY093]:未定义的参数:参数无效数

问题描述 投票:1回答:2

我正在做一个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;

}
php sql-server pdo
2个回答
2
投票

你并不需要'包围你的参数名称。之前和之后'删除: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)
";

1
投票

我相信line 40应该是:

 $stmt->bindParam(':password', $hash, PDO::PARAM_STR);
© www.soinside.com 2019 - 2024. All rights reserved.