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

PHP数组插入变量后无法执行json_encode输出问题排查

问题排查与解决方案

嘿,我仔细捋了你的代码,发现几个关键问题,这应该就是导致json_encode毫无输出的根源:

1. 致命语法错误(最直接原因)

在getPlaces函数里,你写了这行代码:

$lng = row["longitude"];

这里的row前面少了$符号!正确写法应该是:

$lng = $row["longitude"];

这个低级语法错误会直接让PHP脚本终止执行,后面的echo json_encode($response)根本没机会运行,这是核心问题。

2. 缺失错误调试信息

你的代码对数据库查询的错误处理太简略了,当mysqli_query失败时,只返回false,但你完全不知道具体是哪里出了问题。建议修改getPlaces函数,加上错误日志输出:

public function getPlaces() { 
    $places = array(); 
    $stmt = "SELECT * FROM poi "; 
    $retval = mysqli_query( $this->conn, $stmt ); 
    if ($retval) { 
        while($row=mysqli_fetch_array($retval)) { 
            $name = $row["name"]; 
            $lat = $row["latitude"]; 
            $lng = $row["longitude"]; // 修正$符号问题
            $desc = $row["descricao"]; 
            $rating = $row["rating"]; 
            $lm = $row["lm"]; 
            $la = $row["la"]; 
            $lv = $row["lv"]; 
            $places[] = array(
                'name'=> $name, 
                'lat'=> $lat, 
                'lng'=> $lng, 
                'desc'=> $desc, 
                'rating'=> $rating, 
                'lm'=> $lm, 
                'la'=> $la, 
                'lv'=> $lv
            ); 
        } 
        return $places; 
    } else {
        // 记录具体错误信息,方便调试
        error_log("数据库查询错误:" . mysqli_error($this->conn));
        return false; 
    } 
}

3. 字符编码潜在隐患

如果数据库里的字段内容不是UTF-8编码,json_encode会因为无法解析非UTF-8字符而返回false,导致无输出。建议你:

  • 检查数据库表的字符集,确保是utf8mb4(支持所有Unicode字符)
  • 在数据库连接完成后,设置mysqli的字符集:
// 在DB_Functions类的构造函数里添加
mysqli_set_charset($this->conn, 'utf8mb4');

4. 开启PHP错误提示(调试必备)

调试阶段可以开启PHP的错误显示,这样能第一时间看到脚本中的语法或运行时错误:

// 在脚本最开头添加
error_reporting(E_ALL);
ini_set('display_errors', 1);

把这些问题逐一修复后,应该就能正常输出JSON数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:00:34