Select PDO错误“未定义参数”,即使我已定义并绑定了该参数

Select PDO错误“未定义参数”,即使我已定义并绑定了该参数,select,parameters,pdo,bind,Select,Parameters,Pdo,Bind,我正在尝试将这个登录脚本从mySql转换为PDO,SELECT语句可以很好地用于用户名,但不能用于密码 显示的错误消息为SQLSTATE[HY093]:参数编号无效:未定义参数。我是否需要为此语句以不同方式绑定$hashedPassword <?php session_start(); //Include database connection details & salt $password = $_POST['password']; $hashedPassword = s

我正在尝试将这个登录脚本从mySql转换为PDO,SELECT语句可以很好地用于用户名,但不能用于密码

显示的错误消息为SQLSTATE[HY093]:参数编号无效:未定义参数。我是否需要为此语句以不同方式绑定$hashedPassword

<?php
session_start(); 
//Include database connection details & salt
$password = $_POST['password'];  
$hashedPassword = sha1($salt . $password); 

try {  
   $stmt_user = $conn->prepare("SELECT * FROM customer_info WHERE user_name = :user_name and password = :hashedPassword");      

   $stmt_user->bindValue(':user_name', $_POST['user_name'], PDO::PARAM_STR); 
   $stmt_user->bindValue(':password', $hashedPassword);     
   $stmt_user->execute();                 
   session_regenerate_id();                       
   $member = $stmt_user->fetch();
   $_SESSION['SESS_USER_ID'] = $member['user_id'];                    
   session_write_close();
   header("location: launch_member_account.php");
   exit();
}catch(PDOException $e) {
 echo $e->getMessage();
}    
?>        

该语句定义了一个名为:hashedPassword的参数,但bindValue调用使用了一个名为:password的未知参数


参数的名称无关紧要,只要它们匹配,因此最好使它们在整个应用程序中保持一致。

该语句定义了一个名为:hashedPassword的参数,但bindValue调用使用了一个名为:password的未知参数


参数的名称无关紧要,只要它们匹配,因此最好使它们在整个应用程序中保持一致。

该语句在bindValue调用中定义了参数:hashedPassword,但binds:password。只需更改其中一个,使其匹配即可。这是我对你上一个问题的评论中的错误。我这么做了:-D出于好奇,我是否应该改变在INSERT/UPDATE语句中绑定它的方式?我使用bindValue:password'、thoseNo的$hashedPassword没有收到错误消息,它们的名称:password、:hashedPasswod、:username、:只要它们在SQL语句和bindValue/bindParam调用中匹配就无所谓。如果它们有效,就离开它们。很高兴知道:-D如果你想把这个问题转化为一个答案,我会接受它-该语句在bindValue调用中定义参数:hashedPassword,但绑定:password。只需更改其中一个,使其匹配即可。这是我对你上一个问题的评论中的错误。我这么做了:-D出于好奇,我是否应该改变在INSERT/UPDATE语句中绑定它的方式?我使用bindValue:password'、thoseNo的$hashedPassword没有收到错误消息,它们的名称:password、:hashedPasswod、:username、:只要它们在SQL语句和bindValue/bindParam调用中匹配就无所谓。如果它们有效,就离开它们。很高兴知道:-D如果你想把这个问题转化为一个答案,我会接受它-
$stmt_user = $conn->prepare("SELECT * FROM customer_info WHERE user_name = :user_name and password = :hashedPassword");      
//---------------------------------------------------------------------------------------------------^^^^^^^^^^^^^^^^^
// Change this to match the statement.
$stmt_user->bindValue(':hashedPassword', $hashedPassword);