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

000webhost无法获取数据库数据,按钮及提示失效(本地正常)

解决000webhost线上数据库数据不加载、功能失效的问题

咱先从最容易忽略的细节开始排查,毕竟本地正常但线上出问题,大多是代码小错误或者环境差异导致的:

1. 先修复数据库连接代码的语法错误

你写的连接代码里有个明显的语法bug,直接会导致代码报错中断:

// 错误代码
if($db->connect_error){ connection error :("); }

改成下面的正确写法,连接失败时能明确提示并停止后续执行:

if($db->connect_error){
    echo "Connection error: " . $db->connect_error; // 显示具体错误信息
    exit;
}

之前的代码因为缺少echo和引号不匹配,会直接抛出语法错误,后续获取数据的逻辑根本跑不起来。

2. 替换手动拼接JSON的方式,避免格式错误

手动拼接JSON字符串很容易因为字段里的引号、特殊字符导致JSON格式损坏,Angular解析失败后就会只显示字段名。用PHP内置的json_encode生成标准JSON才是稳妥的做法:

$result = $db->query("SELECT * FROM movie");
$records = [];
while($r = $result->fetch_object()) {
    $records[] = $r; // 直接把查询到的对象存入数组
}
$result->free();
$db->close();
// 生成标准JSON响应
echo json_encode(["records" => $records]);

这样不管字段里有什么特殊字符,都会自动转义,保证JSON格式正确。

3. 验证线上数据库的状态和数据

本地能拿到数据不代表线上数据库没问题,你可以直接访问你的PHP接口URL,看看返回的内容:

  • 如果返回{"records":[]}:说明线上数据库里没有数据,或者查询语句有问题(比如表名、字段名和本地不一致)
  • 如果返回报错信息:根据错误提示排查(比如表不存在、权限不足)
  • 如果返回正常的JSON数据:那问题就出在前端Angular部分

4. 排查前端Angular的逻辑问题

如果PHP接口返回正常数据,就检查前端的几个关键点:

  • 确认getall()函数是否正确请求了PHP接口,比如有没有用$http.get()获取数据,并且把响应的data.records赋值给$scope.names
  • 打开浏览器控制台(F12),看看有没有跨域错误、JSON解析错误或者其他报错,这些都会导致数据加载失败
  • 检查ng-repeat绑定的变量是否正确,确保是names而不是其他变量

5. 开启PHP错误提示,方便排查问题

000webhost默认可能关闭了错误显示,你可以在PHP代码最开头加上这两行,让错误信息显示出来,方便定位问题:

error_reporting(E_ALL);
ini_set('display_errors', 1);

内容的提问来源于stack exchange,提问作者Cedie Ian Lamela

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:06:02