DataTable服务器端仅在我有一些数据时才起作用

时间:2016-10-19 13:03:07

标签: php datatable loading

我正在从json加载到关于我的Datatable表的服务器端处理。我有两个环境,一个用于测试和生产。它们具有相同的功能和数据库结构。当我在测试环境中测试新进程时,脚本会毫无问题地加载数据(5行)。

相同的脚本不会在生产环境中加载数据(1200行)。这条线有什么问题?

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

的/ var /日志/ httpd的/ error_log中

[Wed Oct 19 14:55:37.724942 2016] [:error] [pid 28440] [client xxxxxx] PHP Notice:  Undefined index:  in search_user.php on line 31, referer: search_user.php
[Wed Oct 19 14:55:37.724958 2016] [:error] [pid 28440] [client xxxxxx] PHP Notice:  Undefined index: order in search_user.php on line 31, referer: search_user.php
[Wed Oct 19 14:55:37.724971 2016] [:error] [pid 28440] [client xxxxxx] PHP Notice:  Undefined index: start in search_user.php on line 31, referer: search_user.php
[Wed Oct 19 14:55:37.724983 2016] [:error] [pid 28440] [client xxxxxx] PHP Notice:  Undefined index: length in search_user.php on line 31, referer: search_user.php

PHP

<?php
require "common.php" ;
$requestData= $_REQUEST;
$columns = array(
    0 =>'id',
    1 =>'email',
    2 =>'nome',
    3 =>'cognome',
    4 =>'lingua',
    5 =>'unsubscribe'
);
$sql = "SELECT id,email,nome,cognome,lingua,unsubscribe FROM newsletter_utenti";
$query=mysqli_query($db, $sql) or die();
$totalData = mysqli_num_rows($query);
$totalFiltered = $totalData;

$sql = "SELECT id,email,nome,cognome,lingua,unsubscribe ";
$sql.=" FROM newsletter_utenti WHERE 1=1";
if( !empty($requestData['search']['value']) ) {
    $sql.=" AND ( id LIKE '".$requestData['search']['value']."%' ";
    $sql.=" OR email LIKE '".$requestData['search']['value']."%' ";
    $sql.=" OR nome LIKE '".$requestData['search']['value']."%' ";
    $sql.=" OR cognome LIKE '".$requestData['search']['value']."%' ";
    $sql.=" OR lingua LIKE '".$requestData['search']['value']."%' )";
}
$query=mysqli_query($db, $sql) or die("test");
$totalFiltered = mysqli_num_rows($query);
$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]."   ".$requestData['order'][0]['dir']."  LIMIT ".$requestData['start']." ,".$requestData['length']."   ";
//$sql.=" ORDER BY id desc LIMIT 0,30   ";
$query=mysqli_query($db, $sql) or die("errore order by");

$data = array();
while( $row=mysqli_fetch_array($query) ) {
    $nestedData=array();
    $nestedData[] = $row["id"];
    $nestedData[] = $row["email"];
    $nestedData[] = $row["nome"];
    $nestedData[] = $row["cognome"];
    $nestedData[] = $row["lingua"];
    $nestedData[] = $row["unsubscribe"];
    $data[] = $nestedData;
}
$json_data = array(
    "draw"            => intval( $requestData['draw'] ),
    "recordsTotal"    => intval( $totalData ),
    "recordsFiltered" => intval( $totalFiltered ),
    "data"            => $data
);

echo json_encode($json_data);
?>

1 个答案:

答案 0 :(得分:0)

解决!

默认情况下,MySQL实例未配置为期望UTF-8编码来自客户端连接,因此我使用了SET NAMES utf8

谢谢大家! :)