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

时间:2014-07-02 16:01:00

标签: php mysql json mysqli

我遇到从临时表中获取json数据的问题。正如您所看到的,我尝试在charts_econo生成临时表$query2,在第二个文件中,我尝试将表解析为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;
?>

1 个答案:

答案 0 :(得分:2)

来自mysql文档:

  

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

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

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

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

或关联数组/对象:

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

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

decoded_json[0]

decoded_json['results1']
相关问题