所以我的数据库中有两行 - user_one
而且user_two
,这些行被用户ID占用作为消息系统的数字,我还在同一消息功能中包含了一个支持票据系统,但是这个代码片段存在一些问题. .
$sqlc="SELECT * FROM ap_conversations WHERE user_one = '$user_id' AND user_two != '999' OR user_two = '$user_id' AND user_one != '999' OR user_one = '$user_id' AND user_two != '999d' OR user_two = '$user_id' AND user_one != '999d'";
正如您将注意到的那样,支持票证ID是999
,并且只是检查这两个ID都不是999
这个代码完美无缺.虽然我还需要它来检查,无论是user_one
或user_two
有ID的999
或999d
.这个当前的代码返回1
,当我知道它应该返回的事实,0
所以我知道有些东西是出错的,我想我可能会错误地设置它.我试图以多种不同的格式设置它:
$sqlc="SELECT * FROM ap_conversations WHERE user_one = '$user_id' AND (user_two != '999' OR user_two != '999d') OR user_two = '$user_id' AND (user_one != '999' OR user_one != '999d')";
但仍然得到相同的结果?任何人都可以告诉我这里我做错了什么,或者我如何让这段代码表现得更好?
您需要使用括号来建立运算符优先级:
$sqlc="SELECT * FROM ap_conversations WHERE (user_one = '$user_id' AND user_two != '999') OR (user_two = '$user_id' AND user_one != '999') OR (user_one = '$user_id' AND user_two != '999d') OR (user_two = '$user_id' AND user_one != '999d')";