php 实现分页
实现 PHP 分页的基本方法
在 PHP 中实现分页功能通常需要结合数据库查询和前端展示逻辑。以下是常见的实现步骤:
数据库查询部分
通过 SQL 的 LIMIT 子句实现数据分片:
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10;
$start = ($page - 1) * $perPage;
$sql = "SELECT * FROM table_name LIMIT {$start}, {$perPage}";
$result = $conn->query($sql);
计算总页数
获取总记录数并计算总页数:
$total = $conn->query("SELECT COUNT(*) FROM table_name")->fetch_row()[0];
$pages = ceil($total / $perPage);
生成分页链接
创建分页导航 HTML:
for ($i = 1; $i <= $pages; $i++) {
echo "<a href='?page={$i}'>{$i}</a> ";
}
优化分页实现
添加页码限制
避免显示过多页码,限制可见页码数量:
$visiblePages = 5;
$startPage = max(1, $page - floor($visiblePages/2));
$endPage = min($pages, $startPage + $visiblePages - 1);
添加上一页/下一页
增强导航体验:
if ($page > 1) {
echo "<a href='?page=".($page-1)."'>上一页</a> ";
}
if ($page < $pages) {
echo "<a href='?page=".($page+1)."'>下一页</a>";
}
使用预处理语句防止 SQL 注入
更安全的数据库查询方式:
$stmt = $conn->prepare("SELECT * FROM table_name LIMIT ?, ?");
$stmt->bind_param("ii", $start, $perPage);
$stmt->execute();
$result = $stmt->get_result();
封装为可重用函数
创建分页类或函数便于多处使用:
function paginate($conn, $table, $page, $perPage) {
$start = ($page - 1) * $perPage;
$query = "SELECT * FROM $table LIMIT $start, $perPage";
$result = $conn->query($query);
$total = $conn->query("SELECT COUNT(*) FROM $table")->fetch_row()[0];
$pages = ceil($total / $perPage);
return [
'data' => $result->fetch_all(MYSQLI_ASSOC),
'pages' => $pages,
'current' => $page
];
}
前端展示优化
使用 Bootstrap 等框架美化分页导航:
echo '<nav aria-label="Page navigation">
<ul class="pagination">';
for ($i = 1; $i <= $pages; $i++) {
$active = $i == $page ? ' active' : '';
echo '<li class="page-item'.$active.'">
<a class="page-link" href="?page='.$i.'">'.$i.'</a>
</li>';
}
echo '</ul></nav>';
这些方法涵盖了从基础到进阶的 PHP 分页实现,可以根据项目需求选择适合的方案。







