php实现分页显示怎么实现
PHP 分页实现方法
数据库查询与分页逻辑
使用 SQL 的 LIMIT 和 OFFSET 实现分页查询。假设每页显示 10 条记录,当前页码为 $page:
$itemsPerPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $itemsPerPage;
$sql = "SELECT * FROM your_table LIMIT $offset, $itemsPerPage";
$result = $conn->query($sql);
计算总页数
获取总记录数并计算总页数:
$totalItems = $conn->query("SELECT COUNT(*) FROM your_table")->fetch_row()[0];
$totalPages = ceil($totalItems / $itemsPerPage);
显示分页导航
生成分页链接(示例为简单数字分页):
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>';
完整示例代码
// 连接数据库
$conn = new mysqli("localhost", "username", "password", "database");
// 分页参数
$itemsPerPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $itemsPerPage;
// 获取当前页数据
$sql = "SELECT * FROM products LIMIT $offset, $itemsPerPage";
$result = $conn->query($sql);
// 显示数据
while ($row = $result->fetch_assoc()) {
echo $row['product_name']."<br>";
}
// 计算分页
$totalItems = $conn->query("SELECT COUNT(*) FROM products")->fetch_row()[0];
$totalPages = ceil($totalItems / $itemsPerPage);
// 显示分页导航
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 {
margin: 20px 0;
}
.pagination a {
padding: 8px 12px;
margin: 0 5px;
border: 1px solid #ddd;
text-decoration: none;
}
.pagination a.active {
background-color: #007bff;
color: white;
border-color: #007bff;
}
安全注意事项
- 始终对用户输入的页码进行验证和过滤
- 考虑使用预处理语句防止 SQL 注入
- 对超出范围的页码请求进行处理(如跳转到第一页或最后一页)
高级实现方案
对于大型数据集,可以考虑:

- 使用 AJAX 实现无刷新分页
- 实现"上一页"/"下一页"按钮
- 添加页面跳转输入框
- 使用缓存优化分页查询性能






