php如何实现分页
PHP 分页实现方法
使用 MySQL 分页查询
通过 SQL 的 LIMIT 子句实现分页效果:
$perPage = 10; // 每页显示数量
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 当前页码
$offset = ($page - 1) * $perPage; // 计算偏移量
$sql = "SELECT * FROM your_table LIMIT $offset, $perPage";
$result = mysqli_query($conn, $sql);
计算总页数
需要先获取总记录数才能计算总页数:
$totalQuery = "SELECT COUNT(*) FROM your_table";
$totalResult = mysqli_query($conn, $totalQuery);
$totalRows = mysqli_fetch_row($totalResult)[0];
$totalPages = ceil($totalRows / $perPage);
生成分页链接
创建分页导航的 HTML 代码:
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
$active = ($i == $page) ? 'active' : '';
echo "<a href='?page=$i' class='$active'>$i</a>";
}
echo '</div>';
完整示例代码
结合上述代码的完整实现:
<?php
$conn = mysqli_connect("localhost", "username", "password", "database");
$perPage = 10;
$page = max(1, (int)($_GET['page'] ?? 1));
$offset = ($page - 1) * $perPage;
// 获取分页数据
$sql = "SELECT * FROM articles LIMIT $offset, $perPage";
$result = mysqli_query($conn, $sql);
// 显示数据
while ($row = mysqli_fetch_assoc($result)) {
echo "<div>{$row['title']}</div>";
}
// 计算分页
$totalResult = mysqli_query($conn, "SELECT COUNT(*) FROM articles");
$totalRows = mysqli_fetch_row($totalResult)[0];
$totalPages = ceil($totalRows / $perPage);
// 显示分页导航
echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
$active = $i == $page ? 'active' : '';
echo "<a href='?page=$i' class='$active'>$i</a>";
}
echo '</div>';
?>
分页样式建议
为分页链接添加基本 CSS 样式:

.pagination a {
display: inline-block;
padding: 8px 16px;
margin: 0 4px;
border: 1px solid #ddd;
text-decoration: none;
}
.pagination a.active {
background-color: #4CAF50;
color: white;
border: 1px solid #4CAF50;
}
注意事项
- 始终对用户输入的页码进行验证和过滤
- 考虑使用预处理语句防止 SQL 注入
- 对于大型数据集,考虑使用缓存机制提高性能
- 可以添加"上一页"和"下一页"按钮增强用户体验






