php 实现分页
PHP 实现分页的方法
使用 LIMIT 和 OFFSET 进行数据库查询
在 MySQL 或其他 SQL 数据库中,可以使用 LIMIT 和 OFFSET 子句来实现分页查询。LIMIT 指定每页显示的记录数,OFFSET 指定从哪条记录开始显示。
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10; // 每页显示的记录数
$offset = ($page - 1) * $perPage;
$sql = "SELECT * FROM your_table LIMIT $perPage OFFSET $offset";
$result = $conn->query($sql);
计算总页数
为了显示分页导航,需要计算总页数。可以通过查询总记录数并除以每页显示的记录数得到。
$totalSql = "SELECT COUNT(*) as total FROM your_table";
$totalResult = $conn->query($totalSql);
$totalRows = $totalResult->fetch_assoc()['total'];
$totalPages = ceil($totalRows / $perPage);
生成分页导航
根据总页数和当前页码,生成分页导航链接。可以使用简单的 HTML 和 PHP 结合实现。

echo '<div class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
echo '<a href="?page=' . $i . '"';
if ($i == $page) {
echo ' class="active"';
}
echo '>' . $i . '</a>';
}
echo '</div>';
使用 Bootstrap 分页样式
如果需要更美观的分页样式,可以使用 Bootstrap 的分页组件。
echo '<nav aria-label="Page navigation">';
echo '<ul class="pagination">';
for ($i = 1; $i <= $totalPages; $i++) {
echo '<li class="page-item';
if ($i == $page) {
echo ' active';
}
echo '"><a class="page-link" href="?page=' . $i . '">' . $i . '</a></li>';
}
echo '</ul>';
echo '</nav>';
防止无效页码
在实际应用中,需要对用户输入的页码进行验证,确保其有效。

if ($page < 1) {
$page = 1;
} elseif ($page > $totalPages) {
$page = $totalPages;
}
使用预处理语句防止 SQL 注入
为了安全性,建议使用预处理语句来执行分页查询。
$stmt = $conn->prepare("SELECT * FROM your_table LIMIT ? OFFSET ?");
$stmt->bind_param("ii", $perPage, $offset);
$stmt->execute();
$result = $stmt->get_result();
使用框架的分页功能
如果使用的是 PHP 框架(如 Laravel、Symfony 等),可以直接使用框架提供的分页功能。例如在 Laravel 中:
$items = DB::table('your_table')->paginate(10);
return view('your_view', ['items' => $items]);
在视图中可以直接使用 $items->links() 生成分页导航。






