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