首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP + MySQL LIMIT 分頁實戰:從原理到完整代碼

     編輯:MySQL 資料庫相關知識

基於 LIMIT 的高效分頁實現

MySQL LIMIT offset, count 是分頁查詢的標準方式。本文提供一個完整的 PHP 分頁類,包含記錄讀取、頁碼計算、導航生成,適合中小型項目直接使用。

核心邏輯

  • 偏移量計算:($page - 1) * $pageSize
  • 總頁數:ceil($totalRecords / $pageSize)
  • SQL 模板:SELECT * FROM table ORDER BY col LIMIT $offset, $pageSize

完整代碼示例

<?php
$pageSize = 20;
$page = isset($_GET['startpage']) ? intval($_GET['startpage']) : 1;
$offset = ($page - 1) * $pageSize;

// 連接數據庫
$conn = mysql_connect('localhost', 'user', 'pass');
mysql_select_db('book', $conn);

// 獲取總記錄數
$totalSql = "SELECT COUNT(*) AS total FROM main";
$totalRes = mysql_query($totalSql, $conn);
$totalRow = mysql_fetch_assoc($totalRes);
$totalRecords = $totalRow['total'];
$totalPages = ceil($totalRecords / $pageSize);

// 分頁查詢
$sql = "SELECT * FROM main ORDER BY sm LIMIT $offset, $pageSize";
$res = mysql_query($sql, $conn);

// 輸出表格
echo "<table border=1><tr><th>序號</th><th>書號</th><th>書名</th><th>出版社</th><th>定價</th></tr>";
$i = 1;
while ($row = mysql_fetch_assoc($res)) {
    echo "<tr><td>$i</td><td>{$row['bzsh']}</td><td>{$row['sm']}</td><td>{$row['cbs']}</td><td>{$row['dj']}</td></tr>";
    $i++;
}
echo "</table>";

// 生成導航
$prev = $page - 1;
$next = $page + 1;
echo "<hr>";
if ($page == 1) {
    echo "首頁 前頁 ";
    if ($totalPages > 1) echo "<a href='?startpage=$next'>下頁</a> <a href='?startpage=$totalPages'>尾頁</a>";
    else echo "下頁 尾頁 ";
} elseif ($page == $totalPages) {
    echo "<a href='?startpage=1'>首頁</a> <a href='?startpage=$prev'>前頁</a> 下頁 尾頁 ";
} else {
    echo "<a href='?startpage=1'>首頁</a> <a href='?startpage=$prev'>前頁</a> ";
    echo "<a href='?startpage=$next'>下頁</a> <a href='?startpage=$totalPages'>尾頁</a> ";
}
echo " 共 $totalPages 頁 第 $page 頁";
mysql_close($conn);
?>

進階優化建議

  • 使用 mysqli 或 PDO 替代已棄用的 mysql_* 函數
  • 大偏移量(如第 10 萬頁)改用「游標分頁」:WHERE id > $lastId ORDER BY id LIMIT 20
  • 添加索引覆蓋查詢字段,避免回表
  • 總數統計可緩存或用近似值(EXPLAIN rows)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved