带有2个OR语句和1个AND语句的SQL查询

ale*_*567 2 php mysql database

我试图像这样运行SQL查询:

$sql = mysql_query("select * from users where new_mail = 0 OR new_events = 0 and emailed = 1") or die(mysql_error());
while($r=mysql_fetch_array($sql))
{
    mysql_query("update users set emailed = 0 where username='{$r['username']}'") or die(mysql_error());
}
Run Code Online (Sandbox Code Playgroud)

但它似乎忽略了OR语句,只跟在和语句之后.所以它继续进行,并设置通过电子邮件发送到0,即使他们仍然有new_mail或new_event.有什么线索的原因?

谢谢你的帮助!

new*_*rey 7

在MySQL中,AND运算符具有比运算符更高的优先级OR.

要获得所需的逻辑,请尝试按照您希望的方式对参数进行分组:

$sql = mysql_query("select * from users where (new_mail = 0 OR new_events = 0) and emailed = 1") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)