使用PHP生成JSON

时间:2015-12-11 12:37:58

标签: php mysql json

我的PHP有太多查询(如20),每个都有一些带var的回显。我想在单个JSON文件中生成带有这些变量的JSON。

示例:

#test::before {
  content:"before is here ";
  color:red;
}

因为我需要从桌面AIR应用程序加载这些数据,所以每隔2秒就会从​​多次机会中加载,我不想重载MYSQL服务器。无论如何,我相信我能做的最好的事情就是生成一个文件并根据需要加载一个文件。

谢谢!

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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