PHP Mysql WHERE OR查询WHERE和joshcam / PHP-MySQLi-Database-Class

时间:2016-02-19 12:15:37

标签: php mysql

我在我的项目中使用MysqlDb Class

$fromquery = $jdb->where("ac_ag_Id",1)->orWhere("ac_ag_Id",2)->orWhere("ac_ag_Id",4)->orWhere("ac_ag_Id",17)->where("c_Id",$cc_Id)->get("tbl_accounts")

这是我当前的查询,结果是

SELECT  * FROM tbl_accounts WHERE  ac_ag_Id = '1'  OR ac_ag_Id = '2'  OR ac_ag_Id = '4'  OR ac_ag_Id = '17'  AND c_Id = '2'

此处c_Id必须为2,但我也会得到c_Id 1的结果。所以我添加了一个看起来像这样的括号,我得到了当前的结果

SELECT  * FROM tbl_accounts WHERE  (ac_ag_Id = '1'  OR ac_ag_Id = '2'  OR ac_ag_Id = '4'  OR ac_ag_Id = '17')  AND c_Id = '2' 

如何从像添加函数andWhere之类的类中获取此结果?

谢谢。

2 个答案:

答案 0 :(得分:2)

您应该使用IN子句而不是写多个OR运算符

SELECT  * FROM tbl_accounts WHERE  ac_ag_Id IN(1,2,4,17);

使用IN子句,您将获得(1,2,4,17)中ac_ag_Id的所有记录。

了解有关IN clause link的更多信息。以上查询在mysql上运行。我不是php开发人员

答案 1 :(得分:1)

像Vipin Jain建议的那样,您可以使用IN代替许多类似的OR。 MysqliDb Class的语法是:

$fromquery = $jdb->where("c_Id",$cc_Id)
                 ->where("ac_ag_Id", [1,2,4,17], 'IN')
                 ->get("tbl_accounts");