当前位置:首页 > PHP

php 实现分页查询

2026-02-15 09:05:50PHP

PHP 实现分页查询的方法

获取当前页码和每页显示数量

通过 $_GET 获取当前页码参数,默认设置为第一页。每页显示数量可以根据需求设定固定值或动态获取。

$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$items_per_page = 10; // 每页显示10条数据

计算总记录数和总页数

查询数据库获取总记录数,并计算总页数。确保当前页码不超过总页数范围。

$total_items = $db->query("SELECT COUNT(*) FROM table_name")->fetchColumn();
$total_pages = ceil($total_items / $items_per_page);

// 确保当前页码在有效范围内
if ($current_page < 1) {
    $current_page = 1;
} elseif ($current_page > $total_pages) {
    $current_page = $total_pages;
}

计算数据查询的偏移量

根据当前页码和每页显示数量,计算 SQL 查询的偏移量。

$offset = ($current_page - 1) * $items_per_page;

执行分页查询

使用 LIMITOFFSET 进行分页查询,获取当前页的数据。

$stmt = $db->prepare("SELECT * FROM table_name LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $items_per_page, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

生成分页导航链接

根据总页数和当前页码,生成分页导航链接,方便用户跳转到不同页码。

$pagination = '';
if ($total_pages > 1) {
    $pagination .= '<div class="pagination">';
    // 上一页链接
    if ($current_page > 1) {
        $pagination .= '<a href="?page=' . ($current_page - 1) . '">上一页</a>';
    }
    // 页码链接
    for ($i = 1; $i <= $total_pages; $i++) {
        if ($i == $current_page) {
            $pagination .= '<span class="current">' . $i . '</span>';
        } else {
            $pagination .= '<a href="?page=' . $i . '">' . $i . '</a>';
        }
    }
    // 下一页链接
    if ($current_page < $total_pages) {
        $pagination .= '<a href="?page=' . ($current_page + 1) . '">下一页</a>';
    }
    $pagination .= '</div>';
}

显示分页数据和导航

将查询到的数据和分页导航链接显示在页面上。

foreach ($results as $row) {
    echo '<div>' . htmlspecialchars($row['column_name']) . '</div>';
}
echo $pagination;

使用预处理语句防止 SQL 注入

在分页查询中使用预处理语句和参数绑定,确保安全性。

$stmt = $db->prepare("SELECT * FROM table_name LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $items_per_page, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();

使用 Bootstrap 分页样式

如果需要更美观的分页样式,可以结合 Bootstrap 的分页组件。

$pagination = '';
if ($total_pages > 1) {
    $pagination .= '<nav aria-label="Page navigation"><ul class="pagination">';
    // 上一页
    if ($current_page > 1) {
        $pagination .= '<li class="page-item"><a class="page-link" href="?page=' . ($current_page - 1) . '">Previous</a></li>';
    }
    // 页码
    for ($i = 1; $i <= $total_pages; $i++) {
        $active = ($i == $current_page) ? ' active' : '';
        $pagination .= '<li class="page-item' . $active . '"><a class="page-link" href="?page=' . $i . '">' . $i . '</a></li>';
    }
    // 下一页
    if ($current_page < $total_pages) {
        $pagination .= '<li class="page-item"><a class="page-link" href="?page=' . ($current_page + 1) . '">Next</a></li>';
    }
    $pagination .= '</ul></nav>';
}

优化查询性能

对于大数据表,使用索引优化分页查询性能,避免使用 OFFSET 导致性能问题。

php 实现分页查询

// 使用 WHERE 子句替代 OFFSET(适用于有序数据)
$stmt = $db->prepare("SELECT * FROM table_name WHERE id > :last_id ORDER BY id LIMIT :limit");
$stmt->bindValue(':last_id', $last_id, PDO::PARAM_INT);
$stmt->bindValue(':limit', $items_per_page, PDO::PARAM_INT);
$stmt->execute();

标签: 分页php
分享给朋友:

相关文章

php实现打印功能

php实现打印功能

PHP实现打印功能的方法 在PHP中实现打印功能可以通过多种方式完成,包括直接输出到浏览器、生成PDF文件、调用打印机接口等。以下是几种常见的方法: 直接输出HTML内容 PHP可以通过echo或p…

php实现打印功能

php实现打印功能

PHP 实现打印功能的方法 PHP 可以通过多种方式实现打印功能,具体取决于打印的目标(如打印机、PDF、网页等)和需求(如直接打印、生成打印预览等)。以下是几种常见的实现方式: 使用 JavaSc…

php实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php验证码的实现

php验证码的实现

PHP 验证码实现方法 使用 GD 库生成基础验证码 创建画布并生成随机字符串作为验证码内容: session_start(); $width = 120; $height = 40; $image…

php https实现

php https实现

PHP 中实现 HTTPS 的方法 在 PHP 中实现 HTTPS 主要通过配置服务器和编写代码来确保通信的安全性。以下是几种常见的方法: 配置服务器支持 HTTPS 确保服务器已安装 SSL/T…

php实现重定向

php实现重定向

使用header函数进行重定向 在PHP中,header()函数是实现重定向的常用方法。通过发送HTTP头信息Location,浏览器会自动跳转到指定URL。需确保在调用header()前没有输出任何…