当前位置:首页 > 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) 使用Element UI分页组件 安装Element UI库后,可以直接使用其分页组件。在模板中添加el-pagination,通过v-model绑定当前页码,设置page-s…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现定时任务

php实现定时任务

PHP 实现定时任务的几种方法 在 PHP 中实现定时任务可以通过多种方式完成,具体选择取决于项目需求和服务器环境。以下是常见的实现方法: 使用 Cron 任务 Cron 是 Linux 系统中常用…

h5实现左右分页

h5实现左右分页

实现左右分页的HTML5方法 在HTML5中实现左右分页效果可以通过多种方式完成,以下是几种常见的方法: 使用CSS Flexbox布局 Flexbox是一种现代的布局方式,可以轻松实现左右分页效果…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php实现定时

php实现定时

PHP 实现定时任务的方法 PHP 本身是脚本语言,通常需要借助外部工具或框架实现定时任务。以下是几种常见方法: 使用 Cron 任务 Linux 系统自带的 Cron 是常用的定时任务工具。通过编…