2016-10-19 12 views
0

Datatableのテーブルについてjsonローディングからサーバー側処理に渡しています。私はテストとプロダクションの2つの環境を持っています。彼らは同じ機能とデータベース構造を持っています。テスト環境で新しいプロセスをテストすると、スクリプトは問題なくデータをロードします(5行)。DataTableサーバー側は、データが少数の場合にのみ動作します

同じスクリプトは、運用環境(1200行)ではデータを読み込みません。その行に何が問題なの?解決

$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); 
?> 
+0

古いバージョンのデータテーブルを使用していますか? https://datatables.net/manual/server-side#Legacy –

+0

いいえ、私はDataTable 1.10を使用しています – Otto

答えて

0

MySQLインスタンスは、デフォルトでクライアント接続からUTF-8エンコーディングを期待するように設定されていないため、SET NAMES utf8を使用しました。

ありがとうございました! :)

関連する問題