// 查询总记录数(用于计算总页数)
$totalQuery = SELECT COUNT(*) as total FROM your_table_name;
$totalStmt = sqlsrv_query($conn, $totalQuery);
$totalRow = sqlsrv_fetch_array($totalStmt, SQLSRV_FETCH_ASSOC);
$totalRecords = $totalRow['total'];
$totalPages = ceil($totalRecords / $recordsPerPage);
// 分页查询(使用 OFFSET 和 FETCH NEXT)
$sql = SELECT TOP {$recordsPerPage} * FROM your_table_name ORDER BY id OFFSET {$offset} ROWS;
$stmt = sqlsrv_query($conn, $sql);
if (!$stmt) {
die(print_r(sqlsrv_errors(), true));
}
1、OFFSET/FETCH 的兼容性
`OFFSET ..、ROWS FETCH NEXT ..、ROWS ONLY` 是 SQL Server 2012+ 的语法。
如果你使用的是旧版本 SQL Server(如 2008),请改用临时表或行号方式。
2、替代方案(适用于旧版 SQL Server)
sql
使用 ROW_NUMBER() 实现分页(兼容 SQL Server 2005+)
WITH PagedResults AS (
SELECT
ROW_NUMBER() OVER (ORDER BY id) AS RowNum,
*
FROM your_table_name
)
SELECT * FROM PagedResults
WHERE RowNum BETWEEN {$offset + 1} AND {$offset + $recordsPerPage};