我遇到从临时表中获取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;
?>
答案 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']