7-7 PHP数据库操作之查询分页数据
本节编程练习不计算学习进度,请电脑登录imooc.com操作

PHP数据库操作之查询分页数据

上一节中,我们了解到通过循环可以获取一个查询的所有数据,在实际应用中,我们并不希望一次性获取数据表中的所有数据,那样性能会非常的低,因此会使用翻页功能,每页仅显示10条或者20条数据。

通过mysql的limit可以很容易的实现分页,limit m,n表示从m行后取n行数据,在PHP中我们需要构造m与n来实现获取某一页的所有数据。

假定当前页为$page,每页显示$n条数据,那么m为当前页前面所有的数据,既$m = ($page-1) * $n,在知道了翻页原理以后,那么我们很容易通过构造SQL语句在PHP中实现数据翻页。

$page = 2;
$n = 2;
$m = ($page - 1) * $n;
$sql = "select * from user limit $m, $n";
$result = mysql_query($sql);
//循环获取当前页的数据
$data = array();
while ($row = mysql_fetch_assoc($result)) {
    $data[] = $row;
}

在上面的例子中,我们使用了$m与$n变量来表示偏移量与每页数据条数,但我们推荐使用更有意义的变量名来表示,比如$pagesize, $start, $offset等,这样更容易理解,有助于团队协作开发。

任务

构建分页查询语句,实现翻页功能。

  1. <?php
  2. //连接数据库
  3. mysql_connect('127.0.0.1', 'code1', '');
  4. mysql_select_db('code1');
  5. mysql_query("set names 'utf8'");
  6. //预设翻页参数
  7. $page = 2;
  8. $pagesize = 2;
  9. //在这里构建分页查询
  10.  
  11.  
  12. //获取翻页数据
  13. $result = mysql_query($sql);
  14. $data = array();
  15. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  16. $data[] = $row;
  17. }
  18. echo '<pre>';
  19. print_r($data);
  20. echo '</pre>';
下一节