You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP结合MySQL生成嵌套JSON对象时嵌套组件报错问题咨询

MySQL嵌套JSON生成问题解决方案

报错与空白页修复

  • 最初的Unknown column 'KE.CE' in 'where clause'报错是字符串类型字段拼接未加引号导致,MySQL将KE.CE识别为字段名而非查询值。
  • 字符串拼接后返回空白、预编译查询后返回空白的核心排查路径:
    1. 代码顶部开启错误提示,定位隐藏报错:
      error_reporting(E_ALL);
      ini_set('display_errors', 1);
      
    2. 90%以上概率为字段名不匹配:检查你第一步分组查询区域的返回字段,确认region_code对应的数组键名是否真的是id,多数情况下该字段键名为region_code,取错键名会导致传入空值,查询无结果同时无报错输出。
    3. 标准mysqli预编译写法如下(避免SQL注入,性能更高):
      // 预编译语句放在区域循环外初始化,仅执行一次
      $countyStmt = $mysqli->prepare("SELECT county, v1, v2 FROM reporting_summary_county WHERE region_code = ?");
      $countyStmt->bind_param("s", $currentRegionCode); // s指定参数为字符串类型
      
      $result = [];
      // 遍历你第一步查到的区域列表
      foreach ($regionList as $regionItem) {
          // 这里替换成你实际的区域code对应的键名!!!
          $currentRegionCode = $regionItem['region_code']; 
          $countyStmt->execute();
          $countyRes = $countyStmt->get_result();
          
          // 处理revenue为纯值二维数组
          $revenue = [];
          while ($countyRow = $countyRes->fetch_assoc()) {
              // 用array_values去掉键名,只保留字段值
              $revenue[] = array_values($countyRow);
          }
          $regionItem['revenue'] = $revenue;
          $result[] = $regionItem;
      }
      // 最后输出json即可
      echo json_encode($result, JSON_UNESCAPED_UNICODE);
      

纯值二维数组格式修复

  • 之前返回带county、v1、v2键名的数组,是因为直接将fetch_assoc返回的关联数组存入结果,通过array_values()处理单行查询结果即可去掉键名,得到纯值二维数组结构。

内容的提问来源于stack exchange,提问作者MikeM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 23:36:03