DataTable server side works only when I have a few data

a 夏天 提交于 2019-12-02 19:04:16

问题


I'm passing from json loading to server side processing about my Datatable's table. I have two environments, one for tests and the prodution. They have same features and database structure. When i test the new process in the test environment, the script loads data without any problem (5 rows).

The same script doesn't load data in the production environment (1200 rows). What's wrong with that line?

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

/var/log/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:


Solved!

The MySQL instance is not configured to expect UTF-8 encoding by default from client connections, so I used SET NAMES utf8.

Thank you all! :)



来源:https://stackoverflow.com/questions/40132194/datatable-server-side-works-only-when-i-have-a-few-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!