我有一个名为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.......
之后我完全迷失了。
你能帮帮我吗?
由于
答案 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."'");
}
?>