0

PHP PDO を使用して、dev データベースのプレーンテキスト パスワードを 1 回限り置換しようとしています (以下を参照)。

問題なく、または少なくともこの問題なしで、他の多くの 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

発生するエラーは奇妙ですが、クエリを次のように変更してみてください。

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

前後に引用符を追加する必要があります$value

備考:
通行人によって上に投稿されたコメントは良いコメントであり、それを受け入れることをお勧めします!

于 2013-09-18T07:01:15.957 に答える
0

foreach に PDO:bindValue を使用すると、正しい方法は次のようになります。

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 に答える