SQL Server 2008 Pagination PHP


SQL Server 2008 Pagination PHP

我正在尝试使用 SQL SERVER 2008 的功能每页显示 10 条记录ROW_NUMBER。

我认为我的查询有问题,因为我只定义从哪里开始和在哪里结束显示记录(从 1 到 10),而不是每页显示的记录数。

当我转到下一页时,我根本没有显示任何结果,因为我不知道如何将 $per_page 变量正确添加到我的 SQL 查询中。

我想要的只是能够在第 1 页上显示前 10 个产品 ID,一旦我单击"下一步"按钮,将显示接下来的 10 个产品 ID,依此类推。

这是我现在拥有的代码:

$per_page = 10;
if(!isset($_GET['page']))
{
    $page = 1;
}
else
{
    $page = $_GET['page'];  
}
if($page<=1)
{
    $start = 0;
}
else
{
    $start = $page * $per_page - $per_page;
}
$tsql = " SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY productID) AS
rownum, productID FROM products) AS products1
WHERE rownum >= $start AND rownum <= $per_page";

$num_rows = sqlsrv_num_rows(sqlsrv_query($conn,$tsql));
$num_pages = ceil($num_rows / $per_page); 
$stmt = sqlsrv_query($conn,$tsql);
while($row = sqlsrv_fetch_array($stmt)){ 
            echo $row['productID']. "<br/>";
}

$prev = $page - 1;
$next = $page + 1;

echo "<hr>";
//prev
if($prev > 0)
{
    echo "<a href='?page=$prev'>prev</a> ";
}
//numbers
$number = 1;
for($number; $number <= $num_pages; $number +=1)
{
    if($page==$number)
    {
        echo " <b>[$number]</b> ";
    }
    else
    {
        echo "<a href='?page=$number'>$number</a> ";
    }
}
//next 
    echo "<a href='?page=$next'>next</a>";
我不

熟悉sql服务器,但在我看来,你只需要终点:

$tsql = " SELECT *
    FROM (SELECT ROW_NUMBER() OVER(ORDER BY productID) AS
    rownum, productID FROM products) AS products1
    WHERE rownum >= $start AND rownum < ($start + $per_page)";
                                        ^     changed      ^

如果$page应该是整数,最好确保它是:

$page = (int) $_GET['page'];