У меня есть следующий запрос для выбора строк из таблицы на основе номера.
$targeted_rows = implode(",",$wanted);
$sql = "SELECT * FROM (
SELECT @row:=@row+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:=@row+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')
Но когда я выполняю запрос вручную без кавычек, он работает нормально.Я совершенно не знаю, как выполнить связывание без указания кавычек в запросе.
edit: я пытался удалить имплозу и использовать приведенный ниже код, но у меня та же проблема
foreach ($wanted as $value){
$targeted_rows .= $value . ",";
}
$this->db->escape($targeted_rows);