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

PHP开发API时json_encode无返回,数据库查询正常却无JSON输出

问题排查及修复方案

核心故障原因

json_encode 仅支持UTF-8编码的输入数据,若查询出的数据包含非UTF-8字符(比如数据库编码为GBK/GB2312的中文内容),会直接返回false,导致无任何输出,是该场景下最常见的故障原因。同时你的代码还存在几处可优化/修复的点:

  • CORS响应头拼写错误:Acess-Control-Allow-Origin 拼写遗漏字母c,正确为Access-Control-Allow-Origin,错误的头可能触发额外警告
  • 无JSON编码异常兜底逻辑,编码失败时无任何提示信息
  • 前后$data类型不统一:查询有数据时是数组,无数据时是字符串,虽不影响编码但不符合API设计规范

具体修复步骤

  1. 先强制设置数据库返回数据的编码为UTF-8,在SQL查询前增加编码设置代码:
// 放在mysqli_query执行之前
mysqli_set_charset($conn, 'utf8mb4');
  1. 修正拼写错误的响应头
  2. 增加JSON编码异常兜底处理,替换原有的echo json_encode代码段:
$response = ["status"=>$status,"data"=>$data,"code"=>$code];
$jsonContent = json_encode($response);
// 编码失败时返回错误提示
if ($jsonContent === false) {
    $jsonContent = json_encode([
        "status" => false,
        "data" => "JSON编码失败:" . json_last_error_msg(),
        "code" => 0
    ]);
}
echo $jsonContent;
  1. 开发阶段可在代码最开头开启错误显示,排查是否有其他隐藏问题(比如config.php提前输出了空格、BOM头、报错信息导致header失效):
ini_set('display_errors', 1);
error_reporting(E_ALL);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:27:03