【发布时间】:2013-04-08 19:07:52
【问题描述】:
下面我有一个 SQL 查询,它作为登录脚本供选择输入用户名或电子邮件的用户使用。
我注意到,尽管它似乎会检查其中一个或作为登录凭据,但不会。
username1 OR username1@email.com = 仅通过用户名真正查找
SELECT *
FROM tblaccount
WHERE acc_user='username1' OR acc_email='username1@email.com'
AND acc_password='letmein1' AND acc_confirmed='1' AND acc_active='1'
...如果我把它改成...
username0 OR username1@email.com = 它不返回记录。
有什么想法吗?
【问题讨论】:
-
AND的优先级高于OR。您可以使用括号或acc_user IN ('username1', 'username1@email.com') -
使用括号。 AND 优先于 OR,因此第二个 OR 与 AND 一起执行,然后与第一个 OR 一起执行。
-
请记住,您不应该以明文形式存储密码。身份验证和安全性很难做好 - 最好使用适合您的开发语言的库。
-
当然。为了简单起见,只是以这种方式发布。
标签: mysql sql comparison