【问题标题】:SQL Update of MD5 PasswordsMD5 密码的 SQL 更新
【发布时间】:2012-02-05 15:07:03
【问题描述】:

我是 PHP 和 SQL 的新手。我正在尝试从我的数据库中更新密码,但我无法弄清楚 SQL 语句,所以我做了一些研究并遇到了这个 SQL 语句:

UPDATE `Users` SET password= passwordmd5 (password)

然后我在代码中添加了更多内容,如下所示:

UPDATE `Users` SET password= tony123 MD5 (password) WHERE user_id = 55

我收到以下错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MD5 (password) WHERE user_id = 55' at line 1

我该怎么办?

【问题讨论】:

  • 首先,您的语法无效。其次,更好地描述你想要做什么?
  • “密码”,因为 md5 是 5f4dcc3b5aa765d61d8327deb882cf99

标签: php mysql sql


【解决方案1】:

正确的语法是这样的:

UPDATE Users
SET password = MD5('tony123')
WHERE user_id = 55;

或者,如果您以纯文本形式存储密码并且想要将其转换为哈希值,请执行以下操作:

UPDATE Users
SET password = MD5(password);

【讨论】:

  • 感谢@sergiot,我用这个UPDATE Users SET password = MD5(password); 对我的数据库稍作修改,它就像一个魅力!这使我免于手动更新每条记录... :)
  • 小提示:如果新密码(hash)和现有的一样——sql结果会显示:0 row will be affected;)
【解决方案2】:

这将在您将 db 连接字符串添加到您的 php 文件后起作用:

<?php
$password = 'tony123';
$passwordmd5 = md5($password);
$q = mysql_query("UPDATE `Users` SET password = '$passwordmd5' WHERE user_id = 55");
?>

php/mysql 连接参考:http://php.net/manual/en/function.mysql-connect.php

【讨论】:

  • 我不明白为什么这被否决了。这个问题有“php”标签,上面的代码很清楚地解决了。
  • stackoverflow 有时让我很生气!我在这里问了一个真正的问题,但我被一些所谓的“信誉良好的用户”否决了,他们认为他们在所有方面都是最好的!!!
【解决方案3】:

我已将密码作为文本存储到数据库中,当我将其转换为 MD5 密码时,我使用了此查询,

UPDATE tablename SET columname = MD5(columname);

在上述查询中,您也可以使用任何方法代替 MD5,只需替换 MD5。

【讨论】:

    【解决方案4】:

    另一种方法:

    UPDATE Users
    SET password = PASSWORD('tony123')
    WHERE user_id = 55;
    

    更多info

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 2010-11-09
      • 1970-01-01
      相关资源
      最近更新 更多