0

下面我有一个 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= 它不返回记录。

有什么想法吗?

4

2 回答 2

4

在这些条件周围加上一些括号OR

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';
于 2013-04-08T19:09:22.613 回答
1

Mahmoud 的解决方案是正确的。您将必须阅读 mysql 中的运算符优先级。

http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html

由于OR优先级低于AND,您必须OR按照 Mahmoud 提供的方式将 放在括号内。

于 2013-04-08T19:29:08.730 回答