2011-02-03 63 views
8

tôi đang làm một số querys db sử dụng ActiveRecord và tôi cần phải đánh số trang kết quả vì vậy tôi làm mộtCodeIgniter giới hạn truy vấn cơ sở dữ liệu

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

nhưng tôi không nhận được bất kỳ kết quả. Sử dụng $this->db->last_query(); có vẻ như CodeIgniter tạo ra SQL sau đây

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

khi tôi chạy nó bên trong PHPMyAdmin cũng trả về 0 hàng.

Nhưng nếu tôi sửa đổi nó một chạy:

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

Sau đó, tôi nhận được kết quả chính xác. Bất kỳ ideea lý do tại sao CodeIgniter tạo ra SQL này và tại sao nó không hoạt động?

Tôi sử dụng CodeIgniter 1.7.3 và MySQL 5.1.41

Trả lời

20

Ok, đã phát hiện sự cố.

Đó là

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

thay vì

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

param Đầu tiên là dài nhất và thứ hai là bù đắp, không phải là cách khác xung quanh như tôi nghĩ.

Các vấn đề liên quan