拿来就用 PHP+MySQL基础分页方法和代码

本文讨论的是最基础的PHP+MySQL分页方法,不是MVC模式的。

对于PHP页面调用MySQL数据库项目,势必要涉及到分页处理。

这个问题的核心是Mysql的 limit关键字,limit关键字能够设置SQL语句返回记录集的范围,比如复合条件的查询有1万条,我可以用limit每次返回10条,或者20条。

SQL limit子句

分页主要涉及到这么几个变量:当前页、页面大小、总记录数。这三个通过总记录数和页面大小,我们就可以计算出总的页数。然后根据当前页来实现对应的显示。下面是在PHP中如何处理mysql分页的几个部分

// 获取总记录数

$sql = "select count(*) as cot from mytable";
$result = $conn->query($sql);    //$conn是Mysql连接对象
$row = $result->fetch_assoc();
$count = $row['cot'];

// 获取总页数,总页数=总记录数 / 每页记录数

$page_size = 20;    // 每页记录数
$total_pages = ceil($count/$page_size);   ceil()向上舍入为最接近的整数。

// 通过GET方式获得当前页码

$current_page_number = isset($_GET['pn'])?$_GET['pn']:1;   // 如果没有传入页码,则设置当前页码为1
if($current_page_number<1) {
    $current_page_number =1;
}
if($current_page_number>$total_pages){
    $current_page_number = $total_pages;
}

// 根据页码和页面大小,设置记录的起始位置,使用limit子句

$begin_position = ($current_page_number-1)*$page_size;
$sql="select * from mytable limit $begin_position,$page_size";  //limit一定要放到最后,where order等关键字的后面
// 查询后 结果循环显示
...
//

就这样我们就可以拿到自己想要的结果集了。接下来的就是如何在页面上进行展示而已。

// 显示分页链接和页码

echo '<a href="?pn=1">首页</a>&nbsp;&nbsp;';
for($i=1;$i<=$total_pages;$i++){
    echo '<a href="./?pn='.$i.'">第'.$i.'页</a>&nbsp;&nbsp;'; 
}
echo '<a href="?pn='.($current_page_number-1).'">上一页</a>&nbsp;&nbsp;';
echo '<a href="?pn='.($current_page_number+1).'">下一页</a>&nbsp;&nbsp;';
echo '<a href="?pn='.($total_pages).'">尾页</a>&nbsp;&nbsp;';

以上就是在PHP中如何对Mysql记录进行分页的全部内容。

总结

分页是一个很实用的技术,相比较于Java的实现,PHP实现起来灵活性还是很高的。解放了繁琐的面向对象的编程,在思路清晰的时候确实能给人以美感。