sql帮助concat

时间:2010-01-03 22:23:49

标签: sql

SELECT 
    SHA1(CONCAT(users.salt, '$password')) = users.password
FROM users
WHERE 
    users.username = '$username'

如果存在$username,则返回true,无论你在/ /

中放入什么密码都无关紧要

如果用户名和密码正确,我只希望它返回true

我想要的是,我希望它能够获取盐和密码,将其与sha1重新进行比较并将其与用户输入进行比较

我做错了什么?

3 个答案:

答案 0 :(得分:2)

您没有说出哪个数据库,但我不相信您可以像在您所做的那样在select子句中编写关系表达式。试试

SELECT username
FROM users
WHERE 
    users.username = '$username' and 
    SHA1(CONCAT(users.salt, '$password')) = users.password

如果你找回一行匹配的密码;如果没有回来的行,则密码不匹配或用户不存在。

答案 1 :(得分:0)

密码检查应该在where子句中:

SELECT 
    'success' as Result
FROM users
WHERE 
    users.username = '$username'
    AND SHA1(CONCAT(users.salt, '$password')) = users.password

如果检查成功,这应该返回一列一行;否则,它返回一个空的行集。

答案 2 :(得分:0)

SELECT CAST(1 AS bit)
FROM users
WHERE 
    username = '$username' AND
    SHA1(CONCAT(salt, '$password')) = password