请帮忙创建一个查询! 这是我的查询的一个工作示例,使用PHP将数据检索为JSON:
<?php
$con = mysql_connect("localhost","user","password");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("admin_accounting", $con);
$result = mysql_query("SELECT unix_timestamp(date), sum(ksi2k) FROM accounting where lhc_vo like 'ops' group by year(date), month(date)");
$rows = array();
$rows['type'] = 'area';
$rows['name'] = 'Ops';
while($r = mysql_fetch_array($result)) {
$rows['data'][] = $r[0]*1000;
$rows['data'][] = $r[1];
array_push($rows);
}
print json_encode($rows, JSON_NUMERIC_CHECK);
mysql_close($con);
?>
JSON结果如下所示:
{"type":"area","name":"Ops","data":[1167664515000,0,1170342915000,0,1172762115000,0,1175436915000,0,1178028915000,0]}
但是我需要JSON结果应该是这样的:
{"type":"area","name":"Ops","data":[[1167664515000,0],[1170342915000,0],[1172762115000,0],[1175436915000,0],[1178028915000,0]]}
我将非常感谢帮助
答案 0 :(得分:0)
while($r = mysql_fetch_array($result)) {
$rows['data'][] = array($r[0]*1000, $r[1]);
}
答案 1 :(得分:0)
除了我的另一个答案,你应该考虑转离古代(现在已经弃用,从PHP v5.5开始)ext/mysql
。以下是使用PDO的示例,您可以在其中看到问题变得多么简单:
<?php
$con = new PDO(
'mysql:hostname=localhost;dbname=admin_accounting',
'user',
'password'
);
$result = $con->query('
SELECT 1000*UNIX_TIMESTAMP(date), SUM(ksi2k)
FROM accounting
WHERE lhc_vo LIKE "ops"
GROUP BY YEAR(date), MONTH(date)
');
print json_encode([
'type' => 'area',
'name' => 'Ops',
'data' => $result->fetchAll(PDO::FETCH_NUM)
]);
?>
请注意:
我已将乘法移到数据库层,以便我可以简单地调用fetchAll()
来获取结果数组;
MySQL将从结果集中第一列的每个组中选择一个不确定的值;如果这是不合需要的,您需要在date
列的引用中应用合适的聚合函数;以及
我使用了短数组语法,只能从PHP v5.4获得 - 如果您使用的是早期版本,则需要将参数的[ … ]
替换为{{ 1}}与json_encode()
。