什么是分页查询
分页查询是指将一定数量的数据库中的数据进行分页展示,以便更好地展示数据。
例如:在一个博客网站中,文章的数量可能会很多,一个页面无法展示所有文章,所以需要使用分页查询来将文章分成多页展示。
如何使用PHP数据库连接
配置数据库连接参数
在PHP中使用数据库需要先配置连接参数,如下:
//数据库地址
$serverName = "localhost";
//用户名
$userName = "root";
//密码
$password = "123456";
//数据库名称
$dbName = "test";
//创建连接
$conn = mysqli_connect($serverName, $userName, $password, $dbName);
//设置字符编码
mysqli_set_charset($conn,"utf8");
上述代码中,$serverName为数据库地址,$userName为用户名,$password为密码,$dbName为数据库名称,将这些参数传递给mysqli_connect()函数创建一个数据库连接,再使用mysqli_set_charset()函数设置数据库字符编码。
查询数据
查询数据常用的函数是mysqli_query()函数,如下:
//查询数据的sql语句
$sql = "SELECT * FROM user";
//执行查询语句
$result = mysqli_query($conn, $sql);
上述代码中,将查询语句传递给mysqli_query()函数,执行后返回$result结果集。
展示数据
展示数据通常使用while循环遍历$result结果集,如下:
while($row = mysqli_fetch_array($result)) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Age: " . $row["age"] . " - Gender: " . $row["gender"] . "<br>";
}
上述代码中,使用mysqli_fetch_array()函数从$result结果集中取出一条记录,然后通过while循环遍历整个结果集,并使用echo语句输出数据。
如何实现分页查询
计算总页数
要实现分页查询,首先需要计算出总记录数和总页数,如下:
//每页显示的记录数
$pageNum = 10;
//查询数据的sql语句
$sql = "SELECT * FROM user";
//执行查询语句
$result = mysqli_query($conn, $sql);
//总记录数
$total = mysqli_num_rows($result);
//总页数
$totalPage = ceil($total/$pageNum);
上述代码中,$pageNum为每页展示的数据数量,$total为总记录数,$totalPage为总页数,通过使用mysqli_num_rows()函数计算$result结果集的总记录数,再使用ceil()函数对总记录数除以每页展示的数据数量得到总页数。
计算起始位置
为了实现分页查询,需要计算每一页数据的起始位置,如下:
//当前页码
$page = empty($_GET['page']) ? 1 : $_GET['page'];
//起始位置
$offset = ($page - 1) * $pageNum;
上述代码中,通过判断GET请求中是否有page参数,如果没有则默认设置为1,表示第一页,然后根据当前页码计算起始位置。
查询一页数据
查询一页数据需要在查询语句中加上LIMIT关键字,如下:
//查询一页数据的sql语句
$sql = "SELECT * FROM user LIMIT " . $offset . "," . $pageNum;
//执行查询语句
$result = mysqli_query($conn, $sql);
上述代码中,使用$offset和$pageNum计算出查询一页数据的起始位置和总记录数,然后将它们传递给LIMIT关键字,执行查询语句,返回$result结果集。
展示分页数据
展示分页数据需要将查询到的数据按页码展示出来,如下:
while($row = mysqli_fetch_array($result)) {
echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Age: " . $row["age"] . " - Gender: " . $row["gender"] . "<br>";
}
//分页导航
//当前页码和总页数
echo "当前页码:" . $page . " / 总页数:" . $totalPage . " <br>";
//上一页和下一页
$prePage = $page - 1;
$nextPage = $page + 1;
echo "<a href='?page=" . $prePage . "'>上一页</a> ";
echo "<a href='?page=" . $nextPage . "'>下一页</a>";
上述代码中,使用while循环遍历$result结果集输出一页数据,然后通过计算每一页的起始位置和总记录数,以及当前页码和总页数,来生成分页导航。
总结
通过使用mysqli连接数据库,计算每一页的起始位置和总记录数,以及分页展示数据,可以实现分页查询。