Highstock mysql json比较多个系列

时间:2013-05-21 11:10:26

标签: mysql json highstock

请帮忙创建一个查询! 这是我的查询的一个工作示例,使用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]]}

我将非常感谢帮助

2 个答案:

答案 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()