MD5加密表中的所有密码

时间:2011-09-11 09:58:09

标签: php mysql md5

我有一个名为user的数据库表,其中有一些列。其中一列是用户密码。

此密码未加密,我现在要做的是自动获取该表中的所有用户和所有密码,对其进行加密,并使用新的加密密码更新表。

我该怎么办?使用PHP循环?或者是什么?

我在这里有点迷失..

你能提供一个有效的例子吗?

所以我从表中选择密码

$query="SELECT * FROM users";
$ar=mysql_query($query) or die("Error selecting accounts: ".mysql_error());
$ac = mysql_num_rows($ar);
while($arow = mysql_fetch_array($ar)) {
$password = $arow['Password'];
}
AND.......

之后我完全迷失了。

你能帮帮我吗?

由于

2 个答案:

答案 0 :(得分:4)

将此代码输入phpMyAdmin SQL查询页面。首先在phpMyAdmin中登录,然后选择数据库和表格,然后单击“SQL”。然后你需要在字段中输入并提交:

UPDATE users SET password = MD5(CONCAT(password, user_id))

修改

OP需要实际的PHP代码:

$query = "UPDATE users SET password = MD5(CONCAT(password, user_id))";
$ok = mysql_query($query);

不能比这更清楚。您必须确保密码字段足以存储md5哈希值。请记住,md5哈希长度为32个字符。

答案 1 :(得分:0)

DiegoP要求用PHP做到这一点,并且它来了(由于某种原因我无法在那里添加评论..)

$db    = Do database connection here;
$query = "UPDATE users SET password = MD5(CONCAT(password, user_id))";
$doit  = mysql_query($query, $db);

编辑:如果要循环使用

<?php
$q = "SELECT * FROM users";
$s = mysql_query($q, $connection);

for ($i = 0; $i < mysql_num_rows($s); $i++) {
$uid = mysql_result($s, $i, "user_id");
$pass = mysql_result($s, $i, "password");
$s2 = mysql_query("UPDATE users SET password = MD5(CONCAT('".$pass."', '".$uid."')) WHERE user_id = '".$uid."'");
}
?>