我有以下SQL语句:
mysql_query("SELECT * FROM `friends` WHERE friend1='$username' OR friend2='$username' AND confirmed='1'");
我想要完成的是从表中删除从表friends
中选择的数据,其中两个字段之一等于您的用户名,并且confirmed
字段必须等于1。但这似乎并没有起作用。重写它的最好方法是什么?
试试用括号中的好友子句:
SELECT * FROM friends
WHERE (friend1='$username' OR friend2='$username')
AND confirmed='1'
这将确保满足您的好友条件之一。无论哪个匹配,它都会检查确认位。如果两个友元条件都不匹配,则该行不是结果集的一部分。
也许你的where子句没有以你期望的方式评估条件?试一试:
mysql_query("SELECT * FROM `friends` WHERE (friend1='$username' OR friend2='$username') AND confirmed='1'");
下面的链接显示了mysql中的运算符优先级,正如你可以看到AND在OR之前求值,因此你的问题。
http://dev.mysql.com/doc/refman/4.1/en/operator-precedence.html