CodeIgniter分页需先加载库并配置total_rows、per_page、base_url等核心参数;CI3.x默认从URI第三段取页码,须手动同步limit/offset查询;链接样式可自定义,数据重复或缺失主因是总数与列表查询条件不一致。

CodeIgniter 分页类怎么初始化并配置基础参数
CI 的 Pagination 类不处理数据查询,只负责生成页码 HTML,必须配合手动分页逻辑(如 limit + offset)使用。初始化前得先加载类,并明确指定总记录数、每页条数、当前页码——这三个是硬性依赖。
-
$this->load->library('pagination')是前提,别漏掉 -
total_rows必须是真实总数(建议用count()单独查一次,别直接用带limit的查询结果 count) -
per_page建议设为变量,方便后续统一调整;若为 0 或负数,分页将失效且不报错,只显示第一页内容 -
base_url必须写全(含域名或相对路径),且需预留{page}占位符(CI 3.x)或用uri_segment(CI 4.x);写错会导致链接全部指向首页
CI 3.x 中 URL 分页参数怎么取、怎么传
CI 3.x 默认从 URI 第三段读取页码(如 /news/page/2),不是 GET 参数。如果你用的是 ?page=2 这种方式,pagination 类压根不会识别,页码永远是 1。
- 用 URI 路径方式:设置
uri_segment = 3(默认值),确保路由或控制器方法能接收该段,例如public function index($page = 1) - 改用 GET 方式:必须手动获取
$_GET['page']并传给initialize()的cur_page参数,同时关掉自动解析:use_page_numbers = FALSE,否则会冲突 - 注意:CI 3.x 的
cur_page值必须是整数,字符串如"2"会导致跳转异常;建议用(int) $this->uri->segment(3)强转
分页链接样式怎么自定义,避免和前端框架冲突
CI 默认生成的 最典型的症状是:点第 2 页,数据显示第 1 页的内容;或总数 100 条、每页 10 条,但第 10 页只显示 5 条。问题几乎 100% 出在 SQL 查询没同步应用 立即学习“PHP免费学习笔记(深入)”; CI 分页本身轻量,但和业务查询耦合极深;最容易被忽略的是「总数查询」和「列表查询」条件不一致,以及 URI 解析模式与实际路由不匹配——这两处出错,页面能渲染,但数据永远不对。/ 标签结构固定,但 class 名可改,HTML 模板也可重写——尤其当你用 Bootstrap、Tailwind 或 Vue 渲染时,原生输出常会打架。
full_tag_open、first_tag_open 等参数,例如 full_tag_open => '
first_link、last_link 设为空字符串,避免多余“首页”“末页”干扰next_link 和 prev_link 默认是文字(如 youjiankuohaophpcn),不是图标;若你用 Font Awesome,得手动写成 next_link => '',且确保引号转义正确anchor() 回调里拼接 JS 事件(如 onclick="return false;"),CI 会把它当 URL 处理,导致链接失效为什么分页后数据重复或缺失?常见数据层错误
limit 和 offset,或 offset 计算错误。
($this->uri->segment(3) - 1) * $config['per_page'](CI 3.x 路径模式),不是直接用 segment 值WHERE 条件,否则 total_rows 和实际数据对不上;建议把条件抽成复用的私有方法GROUP BY 或 DISTINCT,COUNT(*) 必须套一层子查询,否则总数不准(例如 SELECT COUNT(*) FROM (SELECT DISTINCT ... ) AS t)ORDER BY)必须显式指定,否则不同页可能因索引顺序不稳导致重复或跳行











