2011-02-03 27 views
8

robię jakieś querys db używając ActiveRecord i muszę paginate wyniki tak robięCodeIgniter granica zapytanie do bazy danych

$this->db->limit($pPagination['Start'], $pPagination['Length']); 

ale nie dostają żadnych wyników. Korzystanie $this->db->last_query(); wydaje się, że CodeIgniter produkuje następujące SQL

SELECT * 
FROM (`viw_contacts`) 
WHERE `user_id` = '1' 
ORDER BY `contact_name` asc 
LIMIT 0 OFFSET 15 

który gdy uruchamiam go wewnątrz PHPMyAdmin również zwraca 0 wierszy.

ale gdybym modyfikować mu Run:

SELECT * 
FROM (`viw_contacts`) 
WHERE `user_id` = '1' 
ORDER BY `contact_name` asc 
LIMIT 0, 15 

następnie uzyskać poprawne wyniki. Wszelkie idee dlaczego CodeIgniter generuje ten SQL i dlaczego nie działa?

używam CodeIgniter 1.7.3 i MySQL 5.1.41

Odpowiedz

20

Ok, znalazłem problem.

To

$this->db->limit($pPagination['Length'], $pPagination['Start']); 

zamiast

$this->db->limit($pPagination['Start'], $pPagination['Length']); 

Pierwszy param jest długość i drugie przesunięcie, a nie na odwrót, jak myślałem.

Powiązane problemy