我有以下查詢來從表中選擇基於rownumber的行。代碼點火器查詢綁定
$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 ($wanted as $value){
$targeted_rows .= $value . ",";
}
$this->db->escape($targeted_rows);
謝謝那完美的作品。 – JCrev