0

请帮助创建查询!这是我的查询 Retrieve data as JSON using PHP 的一个工作示例:

<?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]]}

我将非常感谢您的帮助

4

2 回答 2

0
while($r = mysql_fetch_array($result)) {
    $rows['data'][] = array($r[0]*1000, $r[1]);
}
于 2013-05-21T11:15:06.020 回答
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 中可用——如果您使用的是早期版本,则需要将[ … ]参数的 替换为json_encode()with array( … )

于 2013-05-21T12:37:03.937 回答