2015-12-11 121 views
0

我有一個PHP查詢太多了(比如20),每個用var都有幾個echo。我想用這些變量生成一個JSON ..在一個JSON文件中。用PHP生成JSON

實施例:

// QUERY 1 

$query = "SELECT * FROM $table1 WHERE DateV = '$dateV' AND StatusV = 'WORKING'"; 

$result = mysql_query($query) or die("Error : $query. " . mysql_error()); 

$row = mysql_fetch_array($result); 

echo '&Tvar=' . $row['num']; 
echo '&Tvarname=' . $row['name']; 


// QUERY 2 

$query = "SELECT * FROM $table2 WHERE DateV = '$dateV' AND StatusV = 'WORKINGFAST'"; 

$result = mysql_query($query) or die("Error : $query. " . mysql_error()); 

$row = mysql_fetch_array($result); 

echo '&Bvar=' . $row['something']; 
echo '&Bvarname=' . $row['something']; 

,因爲我需要加載的數據,從一個桌面AIR應用程序,從倍數intances每2秒我不想超載MySQL服務器。無論如何,我相信我能做的最好的事情就是生成一個文件並根據需要加載一個文件。

謝謝!

+0

它是否工作,如果你把所有的變量放入一個數組,然後'json_encode'數組並打印出來?爲什麼你打印出一個查詢字符串? –

+0

是的,我問,因爲我不知道該怎麼做。這就是爲什麼我試圖解釋我到目前爲止。 – CrazyF8ck

回答

1

您可以將值添加到一個數組,並使用json_encode()。如果你擔心超載你的MySQL服務器,我可以說每2秒查詢一次就不成問題。

緩存不會每幾次調用一次的結果是一個很好的做法。所以你可以看看memcached或者只是使用一個簡單的文件緩存file_put_contents()file_get_contents()

你可以用類似下面這樣一個代碼試試:

$jsonFile = "my.json";// path to your json file 
$timeToCache = 1 * 60;// cache time in seconds 

// see if the file exists and if the file is older than the time we want to cache 
if(file_exists($jsonFile) && ((time() - filemtime($jsonFile)) > $timeToCache)) { 
    $toJson = array(); 
    // your first query goes here 
    $row = mysql_fetch_array($result); 

    $toJson["Tvar"] = $row['num']; 
    $toJson["Tvarname"] = $row['name']; 

    // your second query goes here 
    $row = mysql_fetch_array($result); 
    $toJson["Bvar"] = $row['something']; 
    $toJson["Bvarname"] = $row['something']; 

    // put your json output to some file 
    $jsonOut = json_encode($toJson); 
    file_put_contents($jsonFile , $jsonOut); 
} else { 
    $jsonOut = file_get_contents($jsonFile); 
} 

echo $jsonOut; 

而且你也應該停止使用mysql_ *功能,因爲它們被棄用:

警告本擴展已被否決PHP 5.5.0,它在PHP 7.0.0中被刪除 。相反,MySQLiPDO_MySQL擴展應該是 使用

看看Why should I use prepared statements

1

試試這個

// QUERY 1 

$query = "SELECT * FROM $table1 WHERE DateV = '$dateV' AND StatusV = 'WORKING'"; 
$arrfinal = array(); 
$result = mysql_query($query) or die("Error : $query. " . mysql_error()); 

$row = mysql_fetch_array($result); 



$arrfinal['first'] = array('Tvar'=>$row['num'], 'Tvarname'=>$row['name']); 
// QUERY 2 

$query = "SELECT * FROM $table2 WHERE DateV = '$dateV' AND StatusV = 'WORKINGFAST'"; 

$result = mysql_query($query) or die("Error : $query. " . mysql_error()); 

$row = mysql_fetch_array($result); 
$arr = array(
      'Bvar' =>$row['something'], 
      'Bvarname' => $row['something'] 
); 
$arrfinal['second'] = $arr; 
echo json_encode($arrfinal); 
+0

它對你有用嗎? –

+1

刪除頂部的兩個回聲,只留下'json_encode'的輸出,以便可以使用json字符串 –

+0

是的,但那會產生多個數組,對嗎?如果我爲每個Query執行此操作,最後一行應該是echo json_encode($ arr,$ arr2,$ arr3); – CrazyF8ck