php - 更新包含大约 50000 条记录的表的所有行上的特定字段

标签 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,但在我的摘要代码中删除了它:)

最佳答案

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

UPDATE `members` SET `password`=MD5(MD5(`password`))

顺便说一句,双 MD5 没有用。如果您想要更好的安全性,可以使用 MD5 + salt 或 SHA1 + salt。

关于php - 更新包含大约 50000 条记录的表的所有行上的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9888129/

相关文章:

php - 大型文本字段的比较分组 - FULLTEXT 搜索、SOLR 或其他?

Mysql 给我不相关的结果

php - 检查了查询、数据库、表名、列名等,还是不明白为什么会出现这个错误

php - 使用 PHP 编辑视频

php - 简单的表单验证测试 - 为空结果更改边框颜色

php - document.friendform1.friends[i].checked 在复选框数组中只有一个元素时不起作用

mysql - 免费的BSD。 nginx、php-fpm、PDO_mysql 驱动程序不起作用

mysql - 更新查询不起作用 - mysql

php - pdo 从表中选择最新的

mysql - MySQL 4.1 建表麻烦