用于JSON输出的PHP和Mysql查询

问题描述 投票:0回答:1

我在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模式,然后动态地测量类型和值,

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

非常感谢!

php mysql json
1个回答
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

希望这可以帮助!

UPDATE

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

© www.soinside.com 2019 - 2024. All rights reserved.