2015-09-18 25 views
0

我試圖使用SQLSRV和PHP進行即時分頁,我已經成功地使用MySQL做了這一點,但是在使用SQL Server時無法這樣做,因爲它不支持LIMIT。不同的分頁方法 - 使用SQLSRV時的限制

我有以下代碼在MySQL中工作,我想在sqlsrv中應用相同的東西,但由於這是不可能的,我期待在創建一個不同的方法(代碼)來實現這一點,有人可以給我一個想法或演練,使這種情況發生,請高級謝謝。

if(isset($_POST['page'])): 
$paged=$_POST['page']; 
$sql="SELECT * FROM `member` ORDER BY `member`.`member_id` ASC"; 


if($paged>0){ 
     $page_limit=$resultsPerPage*($paged-1); 
     $pagination_sql=" LIMIT $page_limit, $resultsPerPage"; 
     } 
else{ 
$pagination_sql=" FETCH 0 , $resultsPerPage"; 
} 

$result=sqlsrv_query($sql.$pagination_sql); 

回答

1

嘗試下面的代碼,我希望你覺得它有用

$paged = filter_input(INPUT_POST, 'page', FILTER_SANITIZE_NUMBER_INT); 

//Initialize these values 
$Table = 'your_tbl_name';   //Table name 
$IndexColumn = 'pk_col_name';  //Primary key column 
$resultsPerPage = '10';   //Page size 
$Where = '';    //Optional WHERE clause, may leave empty 
$Order = '';    //Optional ORDER clause, may leave empty 

$top = ($paged>0) ? $resultsPerPage * ($paged-1) : 0 ;       
$limit = 'TOP ' . $resultsPerPage ; 

$pagination_sql = "SELECT $limit * 
    FROM $Table 
    $Where ".(($Where=="")?" WHERE ":" AND ")." $IndexColumn NOT IN 
    (
     SELECT $IndexColumn FROM 
     (
      SELECT TOP $top * 
      FROM $Table 
      $Where 
      $Order 
     ) 
     as [virtTable] 
    ) 
    $Order"; 

$result=sqlsrv_query($conn, $pagination_sql);