首頁 > 資料庫 > mysql教程 > 如何使用MySQL的LIMIT和OFFSET在PHP中實作資料庫分頁?

如何使用MySQL的LIMIT和OFFSET在PHP中實作資料庫分頁?

Patricia Arquette
發布: 2025-01-05 03:13:41
原創
273 人瀏覽過

How to Implement Database Pagination in PHP using MySQL's LIMIT and OFFSET?

使用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=&quot;/menuitem.php?page=' . $i . '&quot;>Page ' . $i . '</a><br>';
   }
}
登入後複製

以上是如何使用MySQL的LIMIT和OFFSET在PHP中實作資料庫分頁?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板