Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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 无法在使用SQL server的Datatables服务器端使用order和limit_Php_Sql Server_Datatables - Fatal编程技术网

Php 无法在使用SQL server的Datatables服务器端使用order和limit

Php 无法在使用SQL server的Datatables服务器端使用order和limit,php,sql-server,datatables,Php,Sql Server,Datatables,我在将datatable服务器端代码从MySQL传输到SQL server时遇到问题。如果我在服务器端删除这一行,我就能够显示输出 $sql.=“订购人”$列[$requestData['order'][0]['column']..“..$requestData['order'][0]['dir'.]”限制“$requestData['start'.]”、“$requestData['length'.]” 但问题是我不能订购和限制出现的物品数量。如何使此代码在SQL server中工作?求求你,

我在将datatable服务器端代码从MySQL传输到SQL server时遇到问题。如果我在服务器端删除这一行,我就能够显示输出

$sql.=“订购人”$列[$requestData['order'][0]['column']..“..$requestData['order'][0]['dir'.]”限制“$requestData['start'.]”、“$requestData['length'.]”

但问题是我不能订购和限制出现的物品数量。如何使此代码在SQL server中工作?求求你,任何帮助都会是很大的帮助。多谢各位

这是我服务器端的完整代码

 <?php require_once("../includes/connection.php");



$connection = sqlsrv_connect(DB_HOST, array( 'Database'=>DB_NAME, 'UID'=>DB_USER, 'PWD'=>DB_PASSWORD,"CharacterSet" => "UTF-8"));

    // /* Database connection end */

    if( $connection ) {

        }else{
            echo "Connection could not be established.<br />";
            die( print_r( sqlsrv_errors(), true));
        }




// // storing  request (ie, get/post) global array to a variable  
$requestData= $_REQUEST;


$columns = array( 
// datatable column index  => database column name
    0 =>'new_id', 
    1 => 'person_name',
    2=> 'given_name',
    3=> 'family_name'



);

// getting total number records without any search
$sql = "SELECT * , user.id as new_id  ";
$sql.=" FROM user LEFT JOIN user_additional on user.doc_id = user_additional.doc_id  LEFT JOIN users on users.id = user.user_name";
$query=sqlsrv_query($connection, $sql) ;

if( $query === false) {
    die( print_r( sqlsrv_errors(), true) );
}

$totalData = sqlsrv_num_rows($query);
$totalFiltered = $totalData;  // when there is no search parameter then total number rows = total number filtered rows.


$sql ="SELECT * , user.id as new_id  ";
$sql.=" FROM user LEFT JOIN user_additional on user.doc_id = user_additional.doc_id  LEFT JOIN users on users.id = user.user_name WHERE 1=1";
if( !empty($requestData['search']['value']) ) {   // if there is a search parameter, $requestData['search']['value'] contains search parameter

$sql.=" AND ( person_name LIKE '%".$requestData['search']['value']."%' ";
$sql.=" OR family_name LIKE '%".$requestData['search']['value']."%' ";

$sql.=" OR given_name LIKE '".$requestData['search']['value']."%' )";
}
$query=sqlsrv_query($connection, $sql) ;

if( $query === false) {
    die( print_r( sqlsrv_errors(), true) );
}

$totalFiltered = sqlsrv_num_rows($query); // when there is a search parameter then we have to modify total number filtered rows as per search result. 




$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]."   ".$requestData['order'][0]['dir']."  LIMIT ".$requestData['start']." ,".$requestData['length']."   ";


/* $requestData['order'][0]['column'] contains colmun index, $requestData['order'][0]['dir'] contains order such as asc/desc  */    
$query=sqlsrv_query($connection, $sql) ;

if( $query === false) {
    die( print_r( sqlsrv_errors(), true) );
}

$data = array();
while( $row=sqlsrv_fetch_array($query) ) {  // preparing an array
    $nestedData=array(); 

    // $nestedData[]="";
    $nestedData[] = $row["new_id"];
    $nestedData[] = $row["person_name"];
    $nestedData[] = $row["given_name"];
    $nestedData[] = $row["family_name"];



    ;



    $data[] = $nestedData;
}



$json_data = array(
            "draw"            => intval( $requestData['draw'] ),   // for every request/draw by clientside , they send a number as a parameter, when they recieve a response/data they first check the draw number, so we are sending same number in draw. 
            "recordsTotal"    => intval( $totalData ),  // total number of records
            "recordsFiltered" => intval( $totalFiltered ), // total number of records after searching, if there is no searching then totalFiltered = totalData
            "data"            => $data   // total data array
        );

echo json_encode($json_data);  // send data as json format

?>

如果您使用的是sql server 2012或更高版本,则可以使用
偏移/仅取下n行
子句。示例查询供您参考:

SELECT Id, FirstName, LastName, Dept
  FROM Employee
  order by Id asc
  offset 100 rows
  fetch next 10 rows only

请在修改代码后重试,以生成上述查询

如果您使用的是sql server 2012或更高版本,则可以使用
OFFSET/FETCH NEXT n ROWS ONLY
子句。示例查询供您参考:

SELECT Id, FirstName, LastName, Dept
  FROM Employee
  order by Id asc
  offset 100 rows
  fetch next 10 rows only

请在修改代码后重试,以生成上述查询

SQL Server中的SELECT TOP n相当于mysql中的limit。SQL Server中的SELECT TOP n相当于mysql中的limit。您好,当我将静态数据按顺序放入100中时,我已经修改了它,但当我将变量放入其中时,它在SQL Server数据表中不起作用。有什么想法吗$sql.=“订单依据”$列[$requestData['order'][0]['column'].'..$requestData['order'][0]['dir'].“偏移量”。$requestData['start'.]获取下一个“$requestData['length'..”仅行”;'您可以打印$sql并共享生成的sql吗?您好,当我按顺序将静态数据放入100中时,我已经修改了它,但当我将变量放入其中时,它在sql server数据表中不起作用。有什么想法吗$sql.=“订单依据”$列[$requestData['order'][0]['column'].'..$requestData['order'][0]['dir'].“偏移量”。$requestData['start'.]获取下一个“$requestData['length'..”仅行”;'能否打印$sql并共享生成的sql?