Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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 从MySQL临时表获取数据的问题_Php_Mysql_Json_Mysqli - Fatal编程技术网

Php 从MySQL临时表获取数据的问题

Php 从MySQL临时表获取数据的问题,php,mysql,json,mysqli,Php,Mysql,Json,Mysqli,我在从临时表获取json数据时遇到问题。正如您所见,我试图在$query2生成一个临时表charts\u econo,在第二个文件中,我试图将该表解析为JSON,但在运行第一个PHP(createTemp.PHP)和第二个PHP(testTemp.PHP)时,我什么也没有得到 这是我的createTemp.php <?PHP include 'conconfig.php'; $con = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME); $collm

我在从临时表获取json数据时遇到问题。正如您所见,我试图在
$query2
生成一个临时表
charts\u econo
,在第二个文件中,我试图将该表解析为JSON,但在运行第一个PHP(createTemp.PHP)和第二个PHP(testTemp.PHP)时,我什么也没有得到

这是我的createTemp.php

<?PHP
include 'conconfig.php';
$con = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$collm = $_POST['column'];
$query = "SELECT x, y  FROM  econo WHERE ".$collm."=1";
$results = $con->query($query);
$return = array();
if($results) {
while($row = $results->fetch_assoc()) {
    $return[] = array((float)$row['x'],(float)$row['y']);
}
}
$query2 = "CREATE TEMPORARY TABLE IF NOT EXISTS `charts_econo` (
          `econo_sum_projects` decimal(12,7) NOT NULL,
          `econo_sum_powerline` decimal(12,7) NOT NULL,
          `econo_sum_roads` decimal(12,7) NOT NULL,
          `econo_sum_cost` decimal(12,7) NOT NULL
          ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AS(SELECT COUNT(project),
                                                   SUM(powerline_length),
                                                   SUM(road_length),
                                                   SUM(cost_per_year)
                                                   FROM econo WHERE $collm=1;";
$con->query($query2);
$con->close();
echo json_encode($return);
?>

这是testTemp.php

<?PHP
include 'conconfig.php';
$con = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$query = "SELECT *  FROM `charts_econo`";
$results = $con->query($query);

if($results) {
while($row = $results->fetch_assoc()) {
$json= json_encode($row);
   }
}
$con->close();
echo $json;
?>

来自mysql文档:

临时表仅对当前会话可见,并在会话关闭时自动删除

因此,第二个脚本(在大多数情况下)无法访问第一个脚本创建的表!您必须查询它并在第一个脚本中输出JSON,或者从第一个脚本中的
CREATE TEMPORARY TABLE
直接在任一脚本中输出
SELECT
的结果(即不使用任何临时表)

要在同一个JSON中输出这两个文件,可以创建以下两个文件的数组:

echo json_encode([$results1, $results2]);
或关联数组/对象:

echo json_encode({'results1':$results1, 'results2':$results2});
这将改变解码后客户端访问每个部件的方式:

decoded_json[0]


谢谢jcaron,但是你能告诉我如何从一个PHP导出两个json对象吗?我的意思是,正如您可以从createTemp.php中看到的,我已经回显了json_编码($return);(我必须保留它)那么我怎样才能导出另一个呢?@MonaCoder在我的回答中补充了一些关于如何对两个输出进行分组的细节。
decoded_json['results1']