rownumberに基づいてテーブルから行を選択する次のクエリがあります。コードIgniterクエリバインディング
$targeted_rows = implode(",",$wanted);
$sql = "SELECT * FROM (
SELECT @row:[email protected]+1 as rownum, productsa.* FROM (
SELECT @row:=0
)r,productsa
)ranked
WHERE rownum IN (?) ";
$q = $this->db->query($sql, $targeted_rows);
if($q->num_rows() > 0) {
foreach ($q->result() as $row) {
$data[] = $row;
}
return $data;
};
現在、私のクエリは次のように実行されています。数字の周りの引用符で、それは動作していません。
SELECT * FROM (
SELECT @row:[email protected]+1 as rownum, productsa.* FROM (
SELECT @row:=0
)r,productsa
)ranked
WHERE rownum IN ('1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172')
しかし、引用符を使わないで手動でクエリを実行すると、正常に動作します。私はクエリで引用符を表示せずにバインディングを行う方法を完全に失っています。
編集:foreachループを使用してIDをcontatenate、それが動作する唯一の方法ではなく、内破使用してのものであり、私は破を削除し、以下のコードを使用してみましたが、私は同じ問題
foreach ($wanted as $value){
$targeted_rows .= $value . ",";
}
$this->db->escape($targeted_rows);
と同じクエリの出力を得るありがとうそれは完璧に動作します。 – JCrev