我在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}}或者是否有更好的输出方法以便于绘图?
非常感谢!
答案 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请求添加了嵌套数组结构。