2011-02-03 56 views
8

我使用ActiveRecord做一些分贝querys,我需要分页的结果,所以我做了CodeIgniter的数据库查询限制

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

,但我没有得到任何结果。使用$this->db->last_query();似乎笨产生以下SQL

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

,当我里面的phpMyAdmin运行它也返回0行。

但是,如果我修改它的运行:

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

然后我得到正确的结果。任何ideea为什么CodeIgniter生成这个SQL以及为什么它不起作用?

我使用CodeIgniter 1.7.3和MySQL 5.1.41

回答

20

好的,找到了问题。

这是

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

,而不是

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

第一个参数是长度和第二的偏移量,而不是其他的方式,我想。