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


Issue on Getting Data From MySQL Temporary Table

我有从临时表获得json数据的问题。正如你所看到的,我试图在$query2生成一个临时表charts_econo,在第二个文件中,我试图将表解析为JSON,但当我运行第一个PHP (createTemp.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文档:

TEMPORARY表只对当前会话可见,并且在会话关闭时自动删除。

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

要在同一个JSON中输出这两个,您可以创建一个数组:

echo json_encode([$results1, $results2]);

或关联数组/对象:

echo json_encode({'results1':$results1, 'results2':$results2});

这改变了客户端在解码后访问每个部分的方式:

decoded_json[0]

decoded_json['results1']