CodeIgniter分页失效:数据库全量加载而非分页显示问题排查
CodeIgniter分页失效问题修复
核心错误原因
- 每页条数赋值错误:你将
$limit设为总记录数$finaldata['num_results'],导致每页加载所有数据,分页功能直接失效 - 偏移量未正确获取:代码中直接使用
$offset但未从URI分段读取,会导致起始位置计算错误 - 分页配置参数错误:
$config['per_page']被赋值为总记录数,而非预期的每页10条数据
修正后的完整代码
// 从URI第3段获取当前页码,默认值为1 $current_page = $this->uri->segment(3, 1); // 设定每页显示10条数据 $per_page = 10; // 查询总记录数(不带LIMIT,用于计算分页总数) $SQL = "SELECT * FROM list AS a " . $search_condition; $query = $this->db->query($SQL); $finaldata = array(); $finaldata['num_results'] = $query->num_rows(); // 计算数据起始位置(当use_page_numbers为TRUE时,公式为 (页码-1)*每页条数) $start_limit = ($current_page - 1) * $per_page; // 查询当前页数据(带LIMIT) $SQL = "SELECT * FROM list AS a " . $search_condition . " LIMIT " . $start_limit . "," . $per_page; $query = $this->db->query($SQL); if($query->num_rows() > 0) { $finaldata['data'] = $query->result_array(); } // 加载并配置分页库 $this->load->library('pagination'); $config = array(); $config['base_url'] = site_url("adminuser/list"); $config['total_rows'] = $finaldata['num_results']; $config['per_page'] = $per_page; // 这里使用设定的每页10条 $config['uri_segment'] = 3; $config['use_page_numbers'] = TRUE; $config['num_links'] = 5; // 分页HTML容器配置 $config['full_tag_open'] = '<div class="pagination">'; $config['full_tag_close'] = '</div>'; // 补充当前页标签的开标签(原代码缺失,会导致HTML结构错误) $config['cur_tag_open'] = '<span class="current">'; $config['cur_tag_close'] = '</span>'; $this->pagination->initialize($config); $finaldata['pagination'] = $this->pagination->create_links(); $this->load->view('admin/list',$finaldata);
关键修正点说明
- 明确设定
$per_page = 10,固定每页显示条数 - 使用
$this->uri->segment(3, 1)正确获取URI中的页码,避免空值引发的计算错误 - 将分页配置的
per_page参数改为$per_page,确保分页逻辑正确 - 补充原代码缺失的
cur_tag_open配置,保证分页组件的HTML结构完整
内容的提问来源于stack exchange,提问作者John Ken
相关产品推荐
相关产品推荐

