php实现分页功能
PHP实现分页功能的方法
基础分页实现
使用LIMIT和OFFSET实现数据库查询分页,结合URL参数控制页码:
// 获取当前页码,默认为1
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = 10; // 每页显示数量
$offset = ($page - 1) * $perPage;
// 查询数据
$sql = "SELECT * FROM table_name LIMIT $offset, $perPage";
$result = $conn->query($sql);
// 计算总页数
$total = $conn->query("SELECT COUNT(*) FROM table_name")->fetch_row()[0];
$totalPages = ceil($total / $perPage);
分页链接生成
创建可点击的分页导航链接:
// 生成分页链接
for ($i = 1; $i <= $totalPages; $i++) {
echo "<a href='?page=$i'>$i</a> ";
}
使用Bootstrap美化分页
结合Bootstrap的分页组件:
echo '<nav aria-label="Page navigation">
<ul class="pagination">';
if ($page > 1) {
echo '<li class="page-item"><a class="page-link" href="?page='.($page-1).'">Previous</a></li>';
}
for ($i = 1; $i <= $totalPages; $i++) {
$active = $i == $page ? ' active' : '';
echo '<li class="page-item'.$active.'"><a class="page-link" href="?page='.$i.'">'.$i.'</a></li>';
}
if ($page < $totalPages) {
echo '<li class="page-item"><a class="page-link" href="?page='.($page+1).'">Next</a></li>';
}
echo '</ul></nav>';
防止无效页码
添加页码验证逻辑:
// 验证页码有效性
if ($page < 1) {
$page = 1;
} elseif ($page > $totalPages && $totalPages > 0) {
$page = $totalPages;
}
使用预处理语句防止SQL注入
改进数据库查询安全性:
$stmt = $conn->prepare("SELECT * FROM table_name LIMIT ?, ?");
$stmt->bind_param("ii", $offset, $perPage);
$stmt->execute();
$result = $stmt->get_result();
封装分页函数
创建可重用的分页函数:

function paginate($conn, $table, $perPage = 10) {
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;
$total = $conn->query("SELECT COUNT(*) FROM $table")->fetch_row()[0];
$totalPages = ceil($total / $perPage);
$stmt = $conn->prepare("SELECT * FROM $table LIMIT ?, ?");
$stmt->bind_param("ii", $offset, $perPage);
$stmt->execute();
return [
'data' => $stmt->get_result(),
'totalPages' => $totalPages,
'currentPage' => $page
];
}






