0

プロジェクトでMysqlDb クラスを使用しています。

$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_Id1

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よいですか?

4

2 に答える 2

2

INwrite multipleOR演算子の代わりに句を使用する必要があります

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

usingIN句を使用すると、ac_ag_Id が (1,2,4,17) のすべてのレコードを取得できます。

詳細については、IN clause リンクを参照してください。上記のクエリは で実行されmysqlます。私はPHP開発者ではありません

于 2016-02-19T12:21:18.437 に答える
1

Vipin Jain が提案したように、多くの同様の s のIN代わりに使用できます。ORMysqliDb クラスの構文は次のようになります。

$fromquery = $jdb->where("c_Id",$cc_Id)
                 ->where("ac_ag_Id", [1,2,4,17], 'IN')
                 ->get("tbl_accounts");
于 2016-02-19T13:19:33.417 に答える