Sna*_*tes 1 php mysql clause where
所以我的数据库中有两行 - 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'";
Run Code Online (Sandbox Code Playgroud)
正如您将注意到的那样,支持票证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')";
Run Code Online (Sandbox Code Playgroud)
但仍然得到相同的结果?任何人都可以告诉我这里我做错了什么,或者我如何让这段代码表现得更好?
您需要使用括号来建立运算符优先级:
$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')";
Run Code Online (Sandbox Code Playgroud)