2016-05-06 4 views
1

HighchartsにフィードするためにMySQLクエリの出力を解析する際に問題が発生しています。最大の問題は、私は100 +データ系列をHAWEだろうということです、と私は、今、所望の出力がそのようなものになるだろう、解析プロセスの各列名を参照しませんしたいと思います:JSONにMySQL出力を解析してフィールド名を抽出する

[ 
{'name':'TS','data':[4349,4375]} 
{'name':'time1','data':[503,573]} 
{'name':'time2','data':[500,506]} 
{'name':'time3','data':[508,649]} 
] 

しかし、私[すべてのデータが最初の配列で印刷され、この出力で立ち往生mは:

[ 
{'name':'TS','data':[4349,503,573,500,4375,506,508,649,]} 
{'name':'time1','data':[]} 
{'name':'time2','data':[]} 
{'name':'time3','data':[]} 
] 

私が使用しているPHPコードは以下の通りである:

<?php 
    try { 
    $con= new PDO('mysql:host=localhost;dbname=test', "root", ""); 
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $query = "SELECT TIME_TO_SEC(TS) as TS, TIME_TO_SEC(time1) as time1, TIME_TO_SEC(time2) as time2, TIME_TO_SEC(time3) as time3 FROM time ORDER BY TS"; 
    //first pass just gets the column names 
    print "["; 
    $result = $con->query($query); 
    //return only the first row (we only need field names) 
    $row = $result->fetch(PDO::FETCH_ASSOC); 
     //second query gets the data 
    $data = $con->query($query); 
    $data->setFetchMode(PDO::FETCH_ASSOC); 

    foreach ($row as $field => $value){ 
     print "{'name':'$field','data':["; 
     foreach($data as $row){ 
      foreach ($row as $name=>$value){ 
       print " $value,"; 
      } 
     } 
    print "]}"; 
    } 
    print "]"; 
} 
catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 
?> 

任意の提案方法にそれを解決する問題?

+0

'foreach'の中で' $ row'を使っています。それはその上を反復しています – Ahmad

+0

そして、どのようにして列を繰り返すことができますか? FETCH_ASSOC seamsは行番号 – drypatrick

答えて

1

$rowを複数回使用してループにエラーが発生しているようです。 内部変数$rowの名前を他の名前に変更します。 $innerData

foreach ($row as $field => $value){ 
     print "{'name':'$field','data':["; 
     foreach($data as $innerData){ 
      foreach ($innerData as $name=>$innerValue){ 
       print " $innerValue,"; 
      } 
     } 
    print "]}"; 
    } 

あなたのコードにはさらに問題があるようです。 $クエリを使用してデータベースを2回クエリします。 2つの同じ結果セットが得られます。 2番目のクエリ文を挿入するのを忘れましたか?

クエリがMySQLで生成する結果をPHPなしで含めてください。このように私は私の答えを改善することができますまたは他のもあなたを助けるかもしれません。

+0

のみを参照するため、前と同じ結果が得られます – drypatrick

+0

mysql出力を別の変数に割り当てることを意図しています。 – drypatrick

関連する問題