使用MySQL LIMIT、OFFSET 和Response 進行分頁
分頁允許將大型資料集分割為更小的、可管理的頁面,這是Web 開發中的常見技術。 MySQL 提供 LIMIT 和 OFFSET 子句來處理分頁。
問題:
您需要建立多個頁面來顯示資料庫表中的數據,每個頁面具有預先定義的項目數頁面,但沒有對分頁進行硬編碼
解:
在網址中使用分頁參數,如:
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中文網其他相關文章!