当前位置:首页 > PHP

php和mysql实现分页

2026-02-14 02:04:07PHP

实现分页的基本原理

分页功能的核心是通过SQL的LIMIT子句控制数据查询范围,结合前端传递的页码参数动态计算偏移量。MySQL中分页查询语法为:

SELECT * FROM table LIMIT offset, page_size

计算分页参数

定义每页显示数量$page_size和当前页码$page,计算数据偏移量:

php和mysql实现分页

$page_size = 10; // 每页记录数
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // 当前页码
$offset = ($page - 1) * $page_size; // 数据偏移量

获取总记录数

执行SQL查询获取数据总量以计算总页数:

$sql = "SELECT COUNT(*) as total FROM your_table";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$total_records = $row['total'];
$total_pages = ceil($total_records / $page_size);

查询当前页数据

使用计算好的偏移量获取当前页数据:

php和mysql实现分页

$sql = "SELECT * FROM your_table LIMIT $offset, $page_size";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
    // 处理每行数据
}

生成分页导航

创建分页导航链接时需要处理边界情况(如第一页/最后一页):

echo '<div class="pagination">';
if($page > 1) {
    echo '<a href="?page='.($page-1).'">上一页</a>';
}
for($i=1; $i<=$total_pages; $i++) {
    echo '<a href="?page='.$i.'"'.($page==$i?' class="active"':'').'>'.$i.'</a>';
}
if($page < $total_pages) {
    echo '<a href="?page='.($page+1).'">下一页</a>';
}
echo '</div>';

完整示例代码

<?php
$conn = new mysqli('localhost', 'username', 'password', 'database');
$page_size = 10;
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$offset = ($page - 1) * $page_size;

// 获取总记录数
$count_sql = "SELECT COUNT(*) as total FROM products";
$count_result = $conn->query($count_sql);
$total_records = $count_result->fetch_assoc()['total'];
$total_pages = ceil($total_records / $page_size);

// 查询当前页数据
$sql = "SELECT * FROM products LIMIT $offset, $page_size";
$result = $conn->query($sql);

// 显示数据
while($row = $result->fetch_assoc()) {
    echo '<div>'.$row['product_name'].'</div>';
}

// 生成分页导航
echo '<div class="pagination">';
if($page > 1) {
    echo '<a href="?page='.($page-1).'">上一页</a>';
}
for($i=1; $i<=$total_pages; $i++) {
    echo '<a href="?page='.$i.'"'.($page==$i?' class="active"':'').'>'.$i.'</a>';
}
if($page < $total_pages) {
    echo '<a href="?page='.($page+1).'">下一页</a>';
}
echo '</div>';
?>

性能优化建议

对于大数据量表,避免使用COUNT(*)计算总数,可考虑缓存总记录数或使用近似值。在分页查询时确保对排序字段建立索引:

SELECT * FROM large_table 
WHERE id > last_id_of_prev_page 
ORDER BY id LIMIT page_size

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

相关文章

vue 实现分页

vue 实现分页

分页实现方法 在Vue中实现分页功能,可以通过计算属性和方法结合来实现。以下是一个典型的分页实现方式: 模板部分 <template> <div> <…

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现上传

php实现上传

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

php 登录实现

php 登录实现

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

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…