2012-03-28 77 views
0

我想将数据库中明文形式的字符串与散列为MD5()的字符串进行比较。我试图做这样的事情:当我试图在SQL中进行散列时出现错误

SELECT member_email, is_validated FROM members 
WHERE CONVERT(VARCHAR(32), HASHBYTES('MD5', 'member_email'), 2) = '".$_GET['vy']."' 
AND is_validated = '0' 

但我得到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 'VARCHAR(32), HASHBYTES('MD5', 'member_email'), 2) = '' AND is_valida' at line 2。如果我删除''member_email'因此它的HASHBYTES('MD5', member_email)我会得到相同的错误信息。怎么了?我是否必须将MD5哈希放在数据库中,以便将其与$_GET['vy']中的相同MD5哈希进行比较?

在此先感谢!

+0

不是lenght?如果你改变(转换(255)(varchar,GETDATE(),102)) – 2012-03-28 17:33:28

回答

0

MySQL有没有HASHBYTES()http://dev.mysql.com/doc/refman/5.6/en/encryption-functions.html

你试过:

SELECT member_email, is_validated FROM members 
WHERE CONVERT(VARCHAR(32), MD5(member_email), 2) = '".$_GET['vy']."' 
AND is_validated = '0' 
+0

我注意到'WHERE MD5(member_email)='“。$ _ GET ['vy']。”'''更正确:)谷歌搜索为我的问题可能的答案,但我没有找到任何解决方案。非常感谢您的链接和您的答案! – Erik 2012-03-28 19:11:19

相关问题