如何使用PHP数据库连接实现分页查询

什么是分页查询

分页查询是指将一定数量的数据库中的数据进行分页展示,以便更好地展示数据。

例如:在一个博客网站中,文章的数量可能会很多,一个页面无法展示所有文章,所以需要使用分页查询来将文章分成多页展示。

如何使用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连接数据库,计算每一页的起始位置和总记录数,以及分页展示数据,可以实现分页查询。

后端开发标签