0

SQL の結果をデータテーブルに表示しようとしましたが、コードを実行しようとすると、データ配列の JSON 結果が NULL として表示されます。SQL を確認したところ正しいのですが、JSON 形式で表示できません。コードは次のとおりです。

    <?php 
// { initialise variables 
  $amt=100; 
  $start=0; 
// } 
// { connect to database 
  function dbRow($sql){ 
    $q=mysql_query($sql); 
    $r=mysql_fetch_array($q); 
    return $r; 
  } 
  function dbAll($sql){ 
    $q=mysql_query($sql); 
    while($r=mysql_fetch_array($q))$rs[]=$r; 
    return $rs; 
  } 
  mysql_connect('localhost','root','unu@12'); 
  mysql_select_db('GRBS_SITE_DB'); 
// } 
// { count existing records 
  $r=dbRow('select count(University_Name) as c 
            from grbs_country join grbs_rating 
            join grbs_university on grbs_country.Country_Code=grbs_university.Country_Code 
            and grbs_rating.University_id=grbs_university.University_id '); 
  $total_records=$r['c']; 
// } 
// { start displaying records 
  echo '{"iTotalRecords":'.$total_records.',
         "iTotalDisplayRecords":'.$total_records.',
         "aaData":['; 
  $rs=  dbAll("select University_Name,Country_Name,Total_Pubs,Per_Pubs_A1,Per_Pub_A1_A,
               Total_Cite,Per_Cite_A1,Per_Cite_A1_A,H_Index 
               from grbs_country join grbs_rating join grbs_university 
               on grbs_country.Country_Code=grbs_university.Country_Code 
               and grbs_rating.University_id=grbs_university.University_id 
               $start,
               $amt"); 
  $f=0; 
 foreach($rs as $r){ 
    if($f++) echo ',';  
    echo '["',$r['University_Name'],'",
            "',$r['Country_Name'],'",
            "',$r['Total_Pubs'],'",
            "',$r['Per_Pubs_A1'],'",
            "',$r['Per_Pub_A1_A'],'",
            "',$r['Total_Cite'],'",
            "',$r['Per_Cite_A1'],'",
            "',$r['Per_Cite_A1'],'",
            "',$r['H_Index'],'"]'; 
  } 
echo ']}'; 


// } 

firebug の結果は次のようになります。

   {"iTotalRecords":189540,
         "iTotalDisplayRecords":189540,
         "aaData":[]}
4

1 に答える 1

1

まず、json_encode()JSON 文字列を作成する代わりに使用します。

次に、 2 番目のクエリにand変数のWHEREorLIMIT句がないようです (それらを使用して何をしようとしているのかわかりません)。$start$amt

第 3 に、MySQL 拡張機能は廃止されました。新しいコードを書くために使用しないでください。代わりに、PDO (強く推奨) または MySQLi を使用してください。

https://stackoverflow.com/a/12860046/283366を参照してください。

于 2013-01-27T05:59:16.120 に答える