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

通过cPanel拉取JSON编码数据无输出问题求助

排查步骤与问题修复

我来帮你一步步揪出问题所在,你的代码里有几个明显的小错误,还有一些潜在的坑可能导致没输出:

首先看最显眼的问题:

  • 错误处理函数混用:你用了mysqli_query()(mysqli扩展),但错误捕获用的是mysql_error()(老版mysql扩展的函数),这俩完全不兼容!当查询出错时,mysql_error()根本拿不到mysqli连接的错误信息,甚至可能直接触发PHP错误导致脚本终止,却没输出有效提示。赶紧把die(mysql_error())改成die(mysqli_error($con)),这样才能看到真实的查询错误。

接下来逐步排查其他可能的原因:

1. 确认数据库连接是否正常

检查db.php里的连接代码,必须用mysqli扩展的连接方式,比如:

<?php
$con = mysqli_connect("localhost", "你的用户名", "你的密码", "数据库名");
if (!$con) {
    die("连接失败: " . mysqli_connect_error());
}
?>

如果db.php里用的是mysql_connect(),那和mysqli_query()完全不兼容,会直接导致查询失败,自然没数据输出。

2. 开启PHP错误显示,揪出隐藏报错

很多时候没输出是因为有报错但被PHP默认抑制了,在脚本最开头加上这两行,强制显示所有错误:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include "db.php";
// 后面的代码...
?>

3. 验证SQL查询是否真的有数据

先把你的SQL语句复制到cPanel的数据库管理工具(比如phpMyAdmin)里手动执行,看看有没有status = 'Approved'的条目。如果数据库里本来就没有符合条件的数据,那json_encode($data)会输出[](空数组的JSON),看起来像是没输出,但其实是有效的空JSON结果。

4. 检查是否有多余输出干扰

看看db.php文件开头有没有空白字符、换行或者HTML代码(比如<?php之前有空格),这会导致输出的JSON前面带多余字符,可能让前端解析失败,或者看起来像是没输出。确保db.php的第一行就是<?php,没有任何前置内容。

修复后的完整代码示例

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

include "db.php";
$data = array();

// 修复错误处理函数
$q = mysqli_query($con, "SELECT a.*,a.date_added AS date_added2,a.status AS entry_status,a.added_by AS entry_provider FROM entries a WHERE a.status = 'Approved' ORDER BY a.id DESC") or die(mysqli_error($con));

while ($row = mysqli_fetch_object($q)) {
    $data[] = $row;
}

// 加上JSON头,让浏览器正确识别返回类型
header('Content-Type: application/json');
echo json_encode($data);
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:41:51