Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择查询以使用TOP进行分页_Php_Sql Server - Fatal编程技术网

Php 选择查询以使用TOP进行分页

Php 选择查询以使用TOP进行分页,php,sql-server,Php,Sql Server,我已经想在我的页面上创建分页。我使用SQL Server和PDO 下面是我的查询代码 if (isset($_GET['page_no']) && $_GET['page_no']!="") { $page_no = $_GET['page_no']; } else { $page_no = 1; }

我已经想在我的页面上创建分页。我使用SQL Server和PDO

下面是我的查询代码

if (isset($_GET['page_no']) && $_GET['page_no']!="") {
                  $page_no = $_GET['page_no'];
                  } else {
                    $page_no = 1;
                    }

                $total_records_per_page = 3;
                $offset = ($page_no-1) * $total_records_per_page;
                $previous_page = $page_no - 1;
                $next_page = $page_no + 1;
                $adjacents = "2"; 

                $sql_count = $conn->prepare("SELECT COUNT(*) As total_records FROM booking");
                $sql_count->execute();
                $total_records = $sql_count->fetch();
                $total_no_of_pages = ceil($total_records['total_records'] / $total_records_per_page);
                $second_last = $total_no_of_pages - 1; // total page minus 1

$query = $conn->prepare("SELECT TOP $offset, $total_records_per_page * FROM booking LEFT JOIN room ON booking.Room_ID = room.Room_ID WHERE Admin_email = 'hazim_m@topglove.com.my' 
                ORDER BY booking.Book_No DESC");
我从错误中得到的是

“,”附近的[Microsoft][ODBC驱动程序17 for SQL Server][SQL Server]语法不正确。在


我能知道如何解决这个问题吗?

试试这个,如果是错误的,请纠正我:

select top $total_records_per_page * from (
          select *, ROW_NUMBER() over (order by booking.Book_No DESC) as r_n_n 
          from booking ..... where ....
    ) someVariable where r_n_n >=$offset

引用:

根据您编写的SQL查询,在*之前缺少,因为列名在select查询中以分隔。 请试试这个

        $query = $conn->prepare("SELECT TOP 1 $offset, $total_records_per_page, * FROM booking LEFT JOIN room ON booking.Room_ID = room.Room_ID WHERE Admin_email = 'hazim_m@topglove.com.my' 
        ORDER BY booking.Book_No DESC");

选中顶部仅接受一个参数。我建议用谷歌搜索你的SQL Server版本是什么?@Zhorov SQL Server2016@F.Lampard好的,那么就支持OFFSET-FETCH子句。