使用 MySQL LIMIT、OFFSET 和 Response 进行分页
分页允许将大型数据集拆分为更小的、可管理的页面,这是 Web 开发中的常见技术。 MySQL 提供 LIMIT 和 OFFSET 子句来处理分页。
问题:
您需要创建多个页面来显示数据库表中的数据,每个页面具有预定义的项目数页面,但没有对分页进行硬编码
解决方案:
在URL中使用分页参数,如:
http://yoursite.com/itempage.php?page=2
您可以使用以下方式访问请求的页码$_GET['page'].
修改您的 SQL 查询以根据页面动态计算偏移量number:
// determine page number from $_GET $page = 1; if(!empty($_GET['page'])) { $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT); if(false === $page) { $page = 1; } } // set the number of items to display per page $items_per_page = 4; // build query $offset = ($page - 1) * $items_per_page; $sql = "SELECT * FROM menuitem LIMIT " . $offset . "," . $items_per_page;
要确定总页数,需要统计表格的行数:
$sql = "SELECT your_primary_key_field FROM menuitem"; $result = mysqli_query($con, $sql); $row_count = mysqli_num_rows($result); // free the result set as you don't need it anymore mysqli_free_result($result); $page_count = 0; if (0 === $row_count) { // maybe show some error since there is nothing in your table } else { // determine page_count $page_count = ceil($row_count / $items_per_page); // double check that request page is in range if($page > $page_count) { // error to user, maybe set page to 1 $page = 1; } }
显示分页数据时,可以使用$page 和 $page_count 变量来生成适当的链接:
// later when outputting page, you can simply work with $page and $page_count to output links // for example for ($i = 1; $i <= $page_count; $i++) { if ($i === $page) { // this is current page echo 'Page ' . $i . '<br>'; } else { // show link to other page echo '<a href="/menuitem.php?page=' . $i . '">Page ' . $i . '</a><br>'; } }
以上是如何使用MySQL的LIMIT和OFFSET在PHP中实现数据库分页?的详细内容。更多信息请关注PHP中文网其他相关文章!