2015-12-26 13 views
5

muszę wykonać to zapytanie z CodeIgniter konstruktora zapytań:CodeIgniter SET zmienna na zapytania

SET @row_number:=0; 

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

mogę to zrobić za pomocą "$ this-> db-> query" funkcję tak:

$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 . '\'' 

Ale moje pytanie brzmi: Czy istnieje sposób to zrobić bez trudno napisać kwerendę, więc pisząc coś takiego:

 $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(); 

Odpowiedz

2

Nie trzeba pass array in select po prostu napisać zapytanie jako

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

To nie działa, ponieważ wygenerowane zapytanie jest tak: * Wybierz 'id', '@row_number: = @ ROW_NUMBER + 1' jako 'Position' z 'my_table' *. Wydaje mi się, że są dwa problemy: 1 - Nie bierze pod uwagę pierwszej części zapytania (SET @row_number: = 0). 2 - Korzystając z rozwiązania, dołącza cytaty takie jak * '@ numer_wiersza: = @ numer_wiersza + 1' * – Fabio