CodeIgniter中Student_model的fetchDataPro方法用limit返回空数组问题
解决CodeIgniter中
limit()导致查询返回空数组的问题 你的推测完全正确,问题确实出在limit()方法的参数使用上!
在CodeIgniter的Active Record实现里,limit()方法的参数顺序是固定的:
- 第一个参数:要获取的记录数量
- 第二个参数:查询的偏移量(从第几条数据开始读取)
而你当前的代码里把$from(应该是偏移量)放在了第一个位置,$to(应该是要获取的记录数)放在了第二个位置,这就导致当偏移量大于数据表的总记录数时,查询自然返回空数组了。
修改后的正确代码:
Student_model extends CI_Model { public function fetchDataPro($offset, $limit) { $query = $this->db->select(['signuppro.id','fname','lname','cname','profile_pic']) ->from('signuppro') ->join('course','cid=course.id') ->limit($limit, $offset) // 调换参数顺序,先传数量再传偏移量 ->get(); $result = $query->result(); print_r($result); exit; } }
额外排查小技巧:
如果你不确定生成的SQL语句是否符合预期,可以在get()方法执行前添加一行代码打印最终SQL:
// 在get()前添加 echo $this->db->last_query(); exit;
这样就能直观看到limit的参数是否正确传递,方便快速定位问题。
内容的提问来源于stack exchange,提问作者vivek modi
相关产品推荐
相关产品推荐

