我正在尝试使用PHP PDO在我的dev数据库中进行一次性替换纯文本密码(见下文)。
我使用了许多其他PDO INSERT和UPDATE语句而没有任何问题 - 或者至少没有这个问题,所以这里出了什么问题?它似乎突然将列名password
转换为保留字,并将列名设置为哈希值!为什么现在这是一个问题,但从来没有更新密码和其他成员详细信息? (尝试使用和不使用反引号。)
foreach($pwdArr as $key => $value)
{
$value = strtolower ($value);
$value = password_hash($value, PASSWORD_DEFAULT);
$updatePwdSQL = "UPDATE `member` SET `password` = $value WHERE `id` = $key";
$update = $PDOdbObject->prepare($updatePwdSQL);
$update->execute();
}
谢谢,如果有人可以澄清!
答案 0 :(得分:0)
您获得的错误很奇怪,但我认为您应该尝试将查询更改为:
$updatePwdSQL = "UPDATE `member` SET `password` = '$value' WHERE `id` = $key";
您应该在$value
注:
Passerby上面发表的评论是一个很好的评论,建议您接受它!
答案 1 :(得分:0)
正确的方法就是这样,使用PDO:bindValue for foreach
foreach($pwdArr as $key => $value)
{
$value = strtolower ($value);
$value = password_hash($value, PASSWORD_DEFAULT);
$updatePwdSQL = "UPDATE `member` SET `password` = :value WHERE `id` = :key";
$update = $PDOdbObject->prepare($updatePwdSQL);
$update->bindValue (':value', $value);
$update->bindValue (':key', $key, PDO::PARAM_INT);
$update->execute();
}