当前位置:  开发笔记 > 编程语言 > 正文

MySQLi!=没有处理多个AND/OR子句

如何解决《MySQLi!=没有处理多个AND/OR子句》经验,为你挑选了1个好方法。

所以我的数据库中有两行 - 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_oneuser_two有ID的999999d.这个当前的代码返回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')";

但仍然得到相同的结果?任何人都可以告诉我这里我做错了什么,或者我如何让这段代码表现得更好?



1> John Conde..:

您需要使用括号来建立运算符优先级:

$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')";


新年快乐!
@Arth请不要在另一个答案中征求你的答案.你对OP的评论应该放在他们的问题之下.除非你把你的评论瞄准约翰.
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有