<?php
$conn = ociplogon("test", "123456", "test123");
include_once "pager.inc.php";
$pager = new pager();
// 將查詢拆解為結構化陣列
$sqlArr = array(
'conn' => $conn,
'fields' => "id, name, age",
'table' => "test",
'condition' => "age > 20",
'order' => "order by id desc"
);
// 每頁 10 筆,$page 為當前頁碼(自動從 $_GET 獲取)
if (!$pager->listn($sqlArr, 10, $page)) {
die($pager->errmsg());
}
// 資料顯示
foreach ($pager->result as $row) {
echo "id:{$row['ID']} name:{$row['NAME']} age:{$row['AGE']}<hr>";
}
// 分頁導航輸出
echo "{$pager->page} / {$pager->totalpage} 共 {$pager->total} 條記錄 ";
echo ($pager->prev) ? "<a href='?page={$pager->prev}'>上一頁</a> " : "上一頁 ";
echo ($pager->next) ? "<a href='?page={$pager->next}'>下一頁</a> " : "下一頁 ";
OCILogoff($conn);
?>
ROWNUM 偽欄位配合子查詢實現分頁:SELECT * FROM (SELECT a.*, ROWNUM rn FROM (原始查詢) a WHERE ROWNUM <= :max) WHERE rn >= :mincondition 欄位有索引,避免全表掃描。ROW_NUMBER() OVER() 分析函數(Oracle 12c+)替代 ROWNUM。ocipconnect 減少連線開銷。現代專案建議改用 PDO_OCI 或 Doctrine DBAL 等抽象層,分頁邏輯可封裝為通用 Repository 方法,降低資料庫耦合度。