使用大约50000条记录更新表的所有行上的特定字段

时间:2012-03-27 10:49:48

标签: php mysql

我有一个表格可以保存我的用户信息,如用户名,密码,姓名,家庭等等,当用户在我的网站注册时,她的密码哈希值只有一个md5()函数,然后插入到表格中。我的桌子现在有大约50000条记录。 但现在我想再次使用两个md5()函数来散列他们的密码以解决安全问题。为此我写下面的代码,首先选择所有用户,然后执行更新查询更改密码:

$allMembers =   mysql_query("select `username`,`password` from `members`",$conn);


if (mysql_num_rows($allMembers) > 0){

    while($row  =   mysql_fetch_array($allMembers)){

            $oldPass    =   $row['password'];

            $newPass    =   md5(md5('Hello'.$oldPass.'Friends'));

            mysql_query("update `members` set `password`='$newPass' where `username`='".$row['username']."'",$conn);
    }
}

echo("Yes");

但是当我运行此代码时,它花了很少的时间并生成没有数据收到消息。 但现在我如何更新我的大表中的密码字段?

编辑:我使用了salt + md5但在我的代码中删除了它以进行汇总:)

1 个答案:

答案 0 :(得分:2)

只需将其作为单个查询运行:

UPDATE `members` SET `password`=MD5(MD5(`password`))
BTW双MD5没用。如果你想要更好的安全性,你可以使用MD5 +盐或SHA1 +盐。