一、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. 取出第1至第5个学生
  2. 取出第6至第10个学生
  3. 取出第11至第15个学生

    二、分页查询实现原理

    下面也是基于上一节《php操作MySQL数据库》中创建的数据表t_student说明
    image.png
    获取前5条数据: select from t_student limit 0,5;
    image.png
    获取第6至第10条数据:select
    from t_student limit 5,5;
    image.png
    获取第11至第15条数据:select from t_student *limit 10,5;
    image.png
    假设每页数据为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)
每页个数

三、实现分页查询

创建fenye.php

3.1 求总记录数

查询表中有多少条记录的SQL语句:select count(*) from 表名;
image.png

3.2 求总页数

总页数:总记录数 / 每页个数,然后向上取整
image.png

3.3 输出页码

image.png
image.png

3.4 获得传递的当前页码

image.png

3.5 求当前页的起始下标

image.png

3.6 输出当前页的记录

image.png
效果如下:
image.pngimage.png

四、完整代码

  1. <?php
  2. // 连接数据库
  3. $conn = mysqli_connect('localhost', 'root', '', 'db_study') or die('数据库连接失败');
  4. mysqli_query($conn, 'set names utf8');
  5. // 获取总记录数
  6. $sql = "select count(*) from t_student";
  7. $rs = mysqli_query($conn, $sql);
  8. $rows = mysqli_fetch_row($rs)[0]; // 总记录数
  9. $pageSize = 5; // 定义每页多少个
  10. $pageCount = ceil($rows / $pageSize); // 总页数
  11. $pageno = isset($_GET['pageno']) ? $_GET['pageno'] : 1; // 当前页
  12. $startIndex = ($pageno - 1) * $pageSize; // 当前页起始下标
  13. $sql = "select sno,age,name,major from t_student limit $startIndex,$pageSize";
  14. $rs = mysqli_query($conn, $sql);
  15. echo "<table border='1'>";
  16. // 循环将结果集返回到数组中,从而获取表中所有数据记录
  17. while ($arr = mysqli_fetch_array($rs)) {
  18. echo "<tr>
  19. <td>$arr[sno]</td>
  20. <td>$arr[name]</td>
  21. <td>$arr[age]</td>
  22. <td>$arr[major]</td>
  23. </tr>";
  24. }
  25. echo "</table>";
  26. // 输出页码
  27. for ($i = 1; $i <= $pageCount; $i++) {
  28. echo "<a href='?pageno=$i'>$i</a>&nbsp;";
  29. }