0

我正在尝试使用 PHP PDO 一次性替换我的开发数据库中的纯文本密码(见下文)。

我使用许多其他 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();
}

如果有人能澄清一下,谢谢!

4

2 回答 2

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();
}
于 2013-09-18T07:06:07.230 回答
0

您遇到的错误很奇怪,但我认为您应该尝试将查询更改为:

 $updatePwdSQL = "UPDATE `member` SET `password` = '$value' WHERE `id` = $key";

你应该在周围加上引号$value

备注:
上面路人的评论是一个很好的评论,建议您接受它!

于 2013-09-18T07:01:15.957 回答