我已经完成了一些谷歌,它没有提出任何问题,所以我在这里问。
我正在尝试运行此查询(语言为PHP):
SELECT * FROM table WHERE MD5(field1) = '$var'
它没有返回任何行,
非常感谢任何帮助。
P.S。
我尝试了一些变体,例如“SELECT field1 as name FROM table WHERE MD5(name)='$ var'”但它仍然不起作用。
编辑:
我明白了。这个问题的很多答案都假定了很多东西,比如1.它是用于登录系统的(它是用于相关的东西,但不用于登录系统),2。我没有在保存它们之前散列我的值db(我是,但是这种情况要求我不知道明文,因此要求我在MD查询中使用MD5列)。很多这些假设都是因为我简化了示例中的地狱以表达我的问题。感谢那些尝试回答的人。
答案 0 :(得分:5)
是的,MySQL具有内置的MD5功能。
<?php
...("SELECT * FROM table WHERE MD5(password) = '$password';") or die(...
?>
应该可以正常工作。如果它没有返回任何行,那么你必须做错其他的事情。
答案 1 :(得分:5)
看起来你是MD5错误的值。数据库中的密码不应该是纯文本,应该进行哈希处理并存储该值。您编写的查询是散列哈希值,然后将其与用户输入的纯文本进行比较。试试这个 -
SELECT * FROM table WHERE password = MD5($password);
正如Vincent所说,在将查询发送到数据库服务器之前对密码进行散列是有意义的。
$passhash = MD5($password);
SELECT * FROM table WHERE password = $passhash;