2016-04-27 18 views
0

でのデータ操作で、私はこのPHP関数で、JSONファイルにMySQLの要求を解析するトリングよ、解析のMySQL、PHP

<?php 
    //Define possible Argument request 
    $format = $_GET['format']; 

    if($format=='json') { 
     header("Content-type: text/json"); 
    } 

    //Define database credential 
    $servername = "localhost"; 
    $username = ""; 
    $password = ""; 
    $dbname  = ""; 
    try { 
     //Open connection to mysql_db from defined Database credentials 
     $connection = mysqli_connect($servername, $username, $password, $dbname) or die ("Error " . mysqli_error($connection)); 
     //Fetch table rows from mysql db 
     $sql = "SELECT TS, time1, time2, time3 FROM time ORDER BY TS"; 
     $result = mysqli_query($connection, $sql) or die ("Error in Selecting " . mysqli_error($connection)); 
     //Create an array 
     $series0 = array(); 
     $series0['name'] = 'TS'; 

     $series1 = array(); 
     $series1['name'] = 'time1'; 

     $series2 = array(); 
     $series2['name'] = 'time2'; 

     $series3 = array(); 
     $series3['name'] = 'time3'; 

while($r = mysqli_fetch_array($result)) 
{ 
    $series0['data'][] = $r['TS']; 
    $series1['data'][] = $r['time1']; 
    $series2['data'][] = $r['time2']; 
    $series3['data'][] = $r['timez3']; 
} 

$result = array(); 
array_push($result,$series0); 
array_push($result,$series1); 
array_push($result,$series2); 
array_push($result,$series3); 

print json_encode($result, JSON_NUMERIC_CHECK); 

     mysqli_close($connection); 
    } 

    catch(PDOException $e) { 
     echo $e->getMessage(); 
    } 
?> 

私にこのJSON出力できます:

[{ 
    "name": "TS", 
    "data": ["00:08:31.227","00:09:02.434","00:09:38.573"] 
    },{ 
    "name":"time1", 
    "data":["00:05:11.220","00:05:05.420","00:03:32.540"] 
    },{ 
    "name":"time2", 
    "data":["00:04:11.820","00:08:05.660","00:01:24.330"] 
    },{ 
    "name":"time3", 
    "data":["00:02:11.990","00:09:05.570","00:15:25.200"] 
}] 

問題は、「HH:MM:SS.fff」から「秒(SS.fff)」までの時間を変換する必要がありますが、変換機能を適用しようとしていますが、私の数式を配列に追加するには、データを傍受して配列の内部に入る前にデータを操作する方法がありますか?

最後の配列が100以上のデータを取得するため、2番目のマイナーな問題は、シリーズに手動で名前を割り当てないで、MySQLテーブルの列と同じ名前を与える方法です彼らはから来た??

ありがとうございました。ありがとうございました。 よろしくお願いいたします。

+3

$sql = "SELECT TS, time1, time2, time3 FROM time ORDER BY TS"; 

を変更 – Ghost

答えて

0

mysql TIME_TO_SEC機能を使用することができます。

mysql> SELECT TIME_TO_SEC('22:23:00'); 
     -> 80580 
    mysql> SELECT TIME_TO_SEC('00:39:38'); 
     -> 2378 

そうそしてちょうど行われたときに内側に押し、その後、 `while`ブロック内の数式関数を適用

$sql = "SELECT TS, TIME_TO_SEC(time1), TIME_TO_SEC(time2), TIME_TO_SEC(time3) FROM time ORDER BY TS";