如何使用MySQL、PHP和JSON查询数据并解决JSON格式问题
看起来你是要给Highcharts生成适配的JSON数据对吧?我帮你把代码补全并修正问题,这样就能输出正确格式的JSON了:
完整修正代码
<?php // 改进数据库连接:直接指定数据库,错误处理更严谨 $con = mysqli_connect("localhost", "你的用户名", "你的密码", "highchart"); if (!$con) { die('Could not connect: ' . mysqli_connect_error()); } // 执行查询,添加查询错误判断 $query = mysqli_query($con, "SELECT * FROM trafico"); if (!$query) { die('Query failed: ' . mysqli_error($con)); } // 初始化Highcharts需要的数据结构 $category = ['name' => 'Time']; $series1 = ['name' => 'Tx', 'data' => []]; $series2 = ['name' => 'Rx', 'data' => []]; // 遍历查询结果,填充数据(请根据实际表字段名调整) while ($r = mysqli_fetch_assoc($query)) { // 假设时间字段为`t_time`,Tx/Rx为数值型字段`t_tx`/`t_rx` $category['data'][] = $r['t_time']; $series1['data'][] = (float)$r['t_tx']; // 强制转为数值,避免JSON输出字符串 $series2['data'][] = (float)$r['t_rx']; } // 组合成Highcharts期望的最终结构 $result = [ 'categories' => $category, 'series' => [$series1, $series2] ]; // 设置响应头并输出JSON,确保数值类型正确 header('Content-Type: application/json'); echo json_encode($result, JSON_NUMERIC_CHECK); // 关闭数据库连接 mysqli_close($con); ?>
关键细节说明
- 数据库连接优化:把数据库名直接作为
mysqli_connect的第四个参数,省去单独调用mysqli_select_db的步骤,同时用mysqli_connect_error()获取更准确的连接错误信息。 - 数据类型处理:将Tx和Rx字段强制转为浮点型,再通过
JSON_NUMERIC_CHECK参数确保JSON输出的是数值而非字符串——这对Highcharts的图表渲染至关重要,否则可能出现数据不显示的问题。 - 结构匹配Highcharts:最终输出的JSON会完全适配Highcharts的要求,示例格式如下:
{ "categories": { "name": "Time", "data": ["2024-05-01 10:00", "2024-05-01 10:01", "..."] }, "series": [ { "name": "Tx", "data": [120.5, 150.2, "..."] }, { "name": "Rx", "data": [90.3, 110.7, "..."] } ] }
- 记得替换代码里的用户名、密码、表字段名为你实际的配置,比如时间字段如果是
t就改成$r['t'],Tx/Rx字段同理。
内容的提问来源于stack exchange,提问作者Alex Welander
相关产品推荐
相关产品推荐

