一、MySQL中的limit用法
MySQL提供了limit ,主要用于提取前几条或者中间某几行数据。
用法:select … from 表名 limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
例:select * from 表名 limit 2,4
即取出第3条至第6条,4条记录
练习:从上一节《php操作MySQL数据库》中创建的数据表t_student中
- 取出第1至第5个学生
- 取出第6至第10个学生
- 取出第11至第15个学生
二、分页查询实现原理
下面也是基于上一节《php操作MySQL数据库》中创建的数据表t_student说明
获取前5条数据: select from t_student limit 0,5;
获取第6至第10条数据:select from t_student limit 5,5;
获取第11至第15条数据:select from t_student *limit 10,5;
假设每页数据为5条
| 页码 | SQL语句 | 获取的数据 |
|---|---|---|
| 第1页 | select from t_student *limit 0,5; | 第1-第5条 |
| 第2页 | select from t_student *limit 5,5; | 第6-第10条 |
| 第3页 | select from t_student *limit 10,5; | 第11-第15条 |
第1页起始下标:0 = (1-1)5
第2页起始下标:5 = (2-1)5
第3页起始下标:10 = (3-1)5
总结得出:起始下标= (页码-1)每页个数
三、实现分页查询
3.1 求总记录数
查询表中有多少条记录的SQL语句:select count(*) from 表名;
3.2 求总页数
3.3 输出页码
3.4 获得传递的当前页码
3.5 求当前页的起始下标
3.6 输出当前页的记录
四、完整代码
<?php// 连接数据库$conn = mysqli_connect('localhost', 'root', '', 'db_study') or die('数据库连接失败');mysqli_query($conn, 'set names utf8');// 获取总记录数$sql = "select count(*) from t_student";$rs = mysqli_query($conn, $sql);$rows = mysqli_fetch_row($rs)[0]; // 总记录数$pageSize = 5; // 定义每页多少个$pageCount = ceil($rows / $pageSize); // 总页数$pageno = isset($_GET['pageno']) ? $_GET['pageno'] : 1; // 当前页$startIndex = ($pageno - 1) * $pageSize; // 当前页起始下标$sql = "select sno,age,name,major from t_student limit $startIndex,$pageSize";$rs = mysqli_query($conn, $sql);echo "<table border='1'>";// 循环将结果集返回到数组中,从而获取表中所有数据记录while ($arr = mysqli_fetch_array($rs)) {echo "<tr><td>$arr[sno]</td><td>$arr[name]</td><td>$arr[age]</td><td>$arr[major]</td></tr>";}echo "</table>";// 输出页码for ($i = 1; $i <= $pageCount; $i++) {echo "<a href='?pageno=$i'>$i</a> ";}



