Я пытаюсь написать сценарий для хеширования временных паролей. В настоящее время временный пароль и хешированная версия хранятся в одной таблице. Как только я получу их хэширование, я собираюсь сбросить неповрежденную колонку. Проблема: Мой скрипт устанавливает все хэшированные пароли в соответствии с последней записью в таблице.Ошибка цикла SQL Server PDO UPDATE
$conn = new PDO("sqlsrv:Server=localhost;Database=database", "sqlUser", "password");
$result = $conn->prepare("SELECT tempPassword FROM employeeTable");
$result->execute();
$sql = "UPDATE employeeTable SET hashTempPass = :tempPass ";
while($data = $result->fetch(PDO::FETCH_ASSOC))
{
$tempPass = $data['tempPassword'];
$q = $conn->prepare($sql);
$q->bindValue(':tempPass', $tempPass);
$q->execute();
}
Результаты являются такой
user1 unhashPass1 hashpass3
user2 unhashPass2 hashpass3
user3 unhashpass3 hashpass3
Принимая во внимание то, что мне нужно
user1 unhashPass1 hashPass1
user2 unhashPass2 hashPass2
user3 unhashpass3 hashpass3
Я надеюсь, что этот вопрос достаточно ясен. Спасибо.
Редактировать: Поскольку я боролся с этим, Я еще не хеширую пароли, пока не получу этот код.
Почему бы не использовать предложение WHERE? –
Doh ... пропустил отсутствующий WHERE – Ray
Я просто добавил [WHERE tempPassword =: tempPass ";] в конец инструкции [$ sql]. Отрицательный аффект, код сломан. Я уверен, что сделал это неправильно. , если цикл while должен быть в try/catch? Если да, то как лучше всего сообщить об ошибках? –