Я пытаюсь преобразовать этот сценарий входа из mySql в PDO, и оператор SELECT отлично работает для имени пользователя, но не для пароля.
Отображается сообщение об ошибке "SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
". Нужно ли мне по-другому привязывать $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
, но связывает:password
в вызовеbindValue()
. Просто измените один или другой из них, чтобы они совпадали. Это моя вина из комментария к вашему предыдущему вопросу. - person Michael Berkowski   schedule 01.01.2013:password, :hashedPasswod, :username, :whatever
не имеют значения, если они совпадают в операторе SQL и вызове bindValue()/bindParam(). Если они работают, оставь их. - person Michael Berkowski   schedule 01.01.2013