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