当前位置:首页 > PHP

php mysql实现分页

2026-02-15 06:14:08PHP

PHP MySQL 分页实现方法

基本分页逻辑

分页的核心是通过 SQL 的 LIMIT 子句控制查询范围。需要计算两个关键参数:当前页码和每页显示的记录数。

// 每页显示的记录数
$perPage = 10;

// 获取当前页码,默认为1
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;

// 计算偏移量
$offset = ($page - 1) * $perPage;

// 查询数据
$sql = "SELECT * FROM table_name LIMIT $offset, $perPage";
$result = mysqli_query($connection, $sql);

计算总页数

需要查询总记录数才能计算总页数,用于生成分页导航。

// 查询总记录数
$countQuery = "SELECT COUNT(*) as total FROM table_name";
$countResult = mysqli_query($connection, $countQuery);
$totalRows = mysqli_fetch_assoc($countResult)['total'];

// 计算总页数
$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>';

完整示例代码

<?php
// 数据库连接
$connection = mysqli_connect("localhost", "username", "password", "database");

// 分页参数
$perPage = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $perPage;

// 查询数据
$sql = "SELECT * FROM products LIMIT $offset, $perPage";
$result = mysqli_query($connection, $sql);

// 显示数据
while ($row = mysqli_fetch_assoc($result)) {
    echo $row['product_name'] . "<br>";
}

// 计算总页数
$countQuery = "SELECT COUNT(*) as total FROM products";
$countResult = mysqli_query($connection, $countQuery);
$totalRows = mysqli_fetch_assoc($countResult)['total'];
$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>';

// 关闭连接
mysqli_close($connection);
?>

高级分页优化

对于大型数据集,可以考虑以下优化方法:

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

$stmt = $connection->prepare("SELECT * FROM products LIMIT ?, ?");
$stmt->bind_param("ii", $offset, $perPage);
$stmt->execute();
$result = $stmt->get_result();

添加上一页/下一页按钮:

if ($page > 1) {
    echo "<a href='?page=".($page - 1)."'>上一页</a> ";
}
if ($page < $totalPages) {
    echo "<a href='?page=".($page + 1)."'>下一页</a>";
}

实现显示页码范围(如只显示前后5页):

php mysql实现分页

$startPage = max(1, $page - 5);
$endPage = min($totalPages, $page + 5);
for ($i = $startPage; $i <= $endPage; $i++) {
    // 页码链接
}

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

相关文章

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php 登录实现

php 登录实现

PHP 登录实现 PHP 登录功能通常包括用户认证、会话管理和安全性措施。以下是实现 PHP 登录功能的关键步骤。 数据库准备 创建一个用户表存储用户信息,通常包括用户名、密码(加密存储)和其他必要…

php验证码的实现

php验证码的实现

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

php实现文件的下载

php实现文件的下载

PHP 实现文件下载的方法 在 PHP 中实现文件下载功能通常需要设置正确的 HTTP 头信息,并输出文件内容。以下是几种常见的实现方式: 使用 header() 函数强制下载 通过设置 Conte…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…