PHP& JSON输出的Mysql查询

时间:2018-02-12 03:14:40

标签: php mysql json

我在MySQL数据库中有一个表,我试图创建它,以便在它可以存储的信息方面具有灵活性。我们的想法是将大量测试信息放入此表中,然后我可以查询表并输出到PHP中以对数据进行分析。

表模式如下; idraw_data(自动增量) entry_date(datetime) SensorID(int) test_ID(int) test_value(double)

我还使用另外两个表链接到SensorID和Test_ID。一个列出了特定传感器的位置和信息(例如,它被分配给谁),另一个表包括测试信息,如测试测量,单位,上限和下限等。

所以我有一个连接语句工作,它让我以日期,桌子,测试名称和过滤的形式获取数据(星期一上午9点​​ - 下午5点),这是下面的查询;

SELECT raw_data.entry_date, SensorID.Desk, tests.testname, raw_data.test_value FROM raw_data INNER JOIN sensorID ON raw_data.sensorID = SensorID.Sensor INNER JOIN tests ON raw_data.test_id = tests.testid WHERE WEEKDAY(raw_data.entry_date) BETWEEN 0 AND 4 AND HOUR(raw_data.entry_date) BETWEEN 9 AND 17;

我可以使用PHP查询并获取数据库输出,然后使用json_encode将其放入JSON字符串中,然后输入图形包amcharts但我正在努力的是如何格式化数据以使其更加可用

是否有人能够告诉我如何格式化mysql输出以便随后能够获得类似的json模式以提供日期&时间,然后动态测量类型和值

e.g。日期,{location; locationname,[testa:testaname_value,testbname; testbvalue}}或者是否有更好的输出方法以便于绘图?

非常感谢!

1 个答案:

答案 0 :(得分:1)

在这种情况下我通常做的是从MySQL获取原始数据并在其上循环,构建一个新数组,然后可以将其转换为JSON并用于绘图。

例如:

$db_data = RAW_DATA_FROM_MYSQL_ARRAY;
$data_for_graph = [];

foreach ($db_data as $item){

  $data_for_graph[$item['entry_date']] = [
    'location' => $item['location_name'],
    'testa' => $item['testaname_value'],
    'results' => [
      'test_a' => $item['test_a_val'],
      'test_b' => $item['test_b_val'],
    ],
    // etc... construct this as you like..
  ];
}

$data_for_graph_json = json_encode($data_for_graph);

// now do stuff with the graphs

希望这有帮助!

<强>更新

根据OP请求添加了嵌套数组结构。