SQL SELECT 语句查询总是可能导致数千条记录。但是在一个页面上显示所有结果并不是一个好主意。因此,我们可以根据要求将此结果划分为多个页面。分页意味着在多个页面中显示您的查询结果,而不是仅将它们全部放在一个长页面中。MySQL 通过使用 LIMIT 子句帮助生成分页,该子句将采用两个参数。第一个参数为 OFFSET,第二个参数应从数据库返回多少条记录。下面是一个使用 LIMIT 子句获取记录以生成分页的简单示例。
<html>
<head>
<title>PHP 分页 </title>
</head>
<body>
<?php
$dbhost = 'localhost'; // 数据库主机
$dbuser = 'root'; // 用户名
$dbpass = '123456'; // 密码
$rec_limit = 10; // 每页 10 条数据
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn) {die('连接失败:' . mysqli_error());
}
mysqli_select_db($conn,'test'); // 要操作的数据
/* 获取所有的记录数 */
$sql = "SELECT COUNT(id) FROM test";
$retval = mysqli_query($conn, $sql);
if(! $retval) {die('没有获取到数据:' . mysqli_error($conn));
}
$row = mysqli_fetch_array($retval, MYSQLI_NUM);
$rec_count = $row[0];
if(isset($_GET['page'] ) ) {$page = $_GET['page'] + 1;
$offset = $rec_limit * $page ;
}else {
$page = 0;
$offset = 0;
}
$left_rec = $rec_count - ($page * $rec_limit);
$sql = "SELECT name".
"FROM test".
"LIMIT $offset, $rec_limit";
$retval = mysqli_query($conn, $sql);
if(! $retval) {die('不能获取到数据:' . mysqli_error($conn));
}
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC)) {echo "TEST name :{$row['name']} <br>";
}
if($page > 0) {
$last = $page - 2;
echo "<a href = \"".$_SERVER['PHP_SELF']."?page=$last\"> 上一页 </a> |";
echo "<a href = \"".$_SERVER['PHP_SELF']."?page=$page\"> 下一页 </a>";
}else if($page == 0) {echo "<a href = \"".$_SERVER['PHP_SELF']."?page=$page\"> 下一页 </a>";
}else if($left_rec < $rec_limit) {
$last = $page - 2;
echo "<a href = \"".$_SERVER['PHP_SELF']."?page=$last\"> 最后一页 </a>";
}
mysqli_close($conn);
?>
</body>
</html>
修改每页显示的数据或者插入多条数据查看效果,PHP MySQL 插入数据。