我正在使用ActiveRecord进行一些数据库查询,我需要对结果进行分页,以便我做一个
$this->db->limit($pPagination['Start'], $pPagination['Length']);
但我没有得到任何结果。使用$this->db->last_query();
似乎CodeIgniter生成以下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
然后我得到了正确的结果。 CodeIgniter为什么会生成这个SQL以及为什么它不起作用的任何想法?
我使用CodeIgniter 1.7.3和MySQL 5.1.41
答案 0 :(得分:21)
好的,发现了这个问题。
这是
$this->db->limit($pPagination['Length'], $pPagination['Start']);
而不是
$this->db->limit($pPagination['Start'], $pPagination['Length']);
第一个参数是长度,第二个参数是偏移,而不像我想的那样。