php分页代码实现
PHP 分页代码实现
基础分页逻辑
分页的核心是通过 SQL 的 LIMIT 子句实现数据分段查询。假设每页显示 10 条记录,当前页码为 $page:
$perPage = 10;
$offset = ($page - 1) * $perPage;
$sql = "SELECT * FROM articles LIMIT $offset, $perPage";
完整分页示例
以下是一个结合 MySQL 和 HTML 的完整分页实现:
// 数据库连接
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
// 获取总记录数
$total = $db->query('SELECT COUNT(*) FROM articles')->fetchColumn();
// 分页参数
$perPage = 5;
$pages = ceil($total / $perPage);
$page = $_GET['page'] ?? 1;
$offset = ($page - 1) * $perPage;
// 查询当前页数据
$stmt = $db->query("SELECT * FROM articles LIMIT $offset, $perPage");
$articles = $stmt->fetchAll(PDO::FETCH_ASSOC);
分页导航生成
在 HTML 中生成分页链接(需放在视图文件中):
<nav aria-label="Page navigation">
<ul class="pagination">
<?php for ($i = 1; $i <= $pages; $i++): ?>
<li class="page-item <?= $page == $i ? 'active' : '' ?>">
<a class="page-link" href="?page=<?= $i ?>"><?= $i ?></a>
</li>
<?php endfor ?>
</ul>
</nav>
安全增强
为防止 SQL 注入,建议使用预处理语句:
$stmt = $db->prepare("SELECT * FROM articles LIMIT :offset, :perPage");
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->bindValue(':perPage', $perPage, PDO::PARAM_INT);
$stmt->execute();
优化建议
- 大型数据集建议使用
WHERE条件缩小查询范围 - 可添加「上一页/下一页」按钮提升用户体验
- 超过一定页数时(如 20 页)可添加省略号或分页区间显示







