2015-12-26 3 views
5

мне нужно выполнить этот запрос с CodeIgniter построитель запросов:Codeigniter SET переменная по запросу

SET @row_number:=0; 

SELECT Id, @row_number:[email protected]_number+1 as Position 
FROM my_table 
WHERE date='2015-12-26' 

я могу сделать это с помощью "запроса $ this-> db->" функции, как это:

$query = 'SET @row_number:=0;'; 
    $this-> db-> query ($query); 

    $query = 'SELECT Id, @row_number:[email protected]_number+1 as Position'; 
    $query = $query . ' FROM my_table'; 
    $query = $query . ' WHERE date=\'' . $data . '\'' 

Но, на мой вопрос: есть ли способ сделать это без жесткого записи запроса, так что писать что-то вроде этого:

 $query = 'SET @row_number:=0;'; 
     $this-> db-> query ($query); 
     #*****It's wrong!!!!***** 

     $this -> db -> select(array('Id', '@row_number:[email protected]_number+1 as Position')); 
     $this -> db -> from('my_table'); 
     $this -> db -> where('date', $data); 
     $query = $this -> db -> get(); 

ответ

2

Нет необходимости pass array in select вы просто написать запрос как

$this -> db -> select('Id, @row_number:[email protected]_number+1 as Position'); 
+0

Это не работает, потому что генерируется запрос, как это: * SELECT 'Id', '@row_number: = @ row_number + 1' как 'Position' FROM 'my_table' *. Я думаю, что есть две проблемы: 1-Он не учитывает первую часть запроса (SET @row_number: = 0). 2. Используя ваше решение, он присоединяет цитаты типа * '@ row_number: = @ row_number + 1' * – Fabio

Смежные вопросы