Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP生成JSON_Php_Mysql_Json - Fatal编程技术网

用PHP生成JSON

用PHP生成JSON,php,mysql,json,Php,Mysql,Json,我有一个PHP,有太多的查询(比如20个),每个查询都有一些变量的回声。我想用这些变量生成一个JSON。。在单个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_

我有一个PHP,有太多的查询(比如20个),每个查询都有一些变量的回声。我想用这些变量生成一个JSON。。在单个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应用程序加载数据,每隔2秒从多个入口加载一次数据,我不想让MYSQL服务器过载。无论如何,我相信我能做的最好的事情就是生成一个文件,并根据需要多次加载该文件

谢谢大家!

试试这个

// 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);

您可以将值添加到数组并使用。如果您担心MySQL服务器过载,我可以说每2秒查询一次并不是问题

缓存结果是一种很好的做法,它不会每隔几次调用就改变一次。因此,您可以查看或仅使用带有和的简单文件缓存

您可以使用类似以下代码进行尝试:

$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_*函数,因为它们已被弃用:

警告:此扩展在PHP5.5.0中已被弃用,并已被删除 在PHP7.0.0中。相反,or扩展应该是 使用


看看。

如果将所有变量放入一个数组中,然后对数组进行编码并打印出来,是否有效?为什么要打印查询字符串?是的,我问这个问题,因为我不知道怎么做。这就是为什么我要解释我到目前为止所做的。去掉顶部的两个echo,只留下
json_encode
的输出,这样json字符串就可以被使用了,但这会生成多个数组,对吗?如果我对每个查询都这样做,那么最后一行应该类似于echo json_encode($arr,$arr2,$arr3);然后你必须为这个创建一个多维数组。很抱歉我错过了这些。你能在多维数组中详细说明一下吗?