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

AngularJS与PHP获取MySQL指定数据异常,请求排查问题

解决AngularJS GET请求无法获取MySQL数据的问题

嘿,咱们一步步来排查你的问题,你遇到的情况是因为PHP代码里有两个关键错误,导致没能返回预期的表数据:

第一个问题:错误的$_POST判断导致脚本提前终止

你的AngularJS用的是GET请求,但PHP里第一行就写了if(!isset($_POST)) die();——GET请求下$_POST是空的,这个判断会直接让脚本停止执行,后面的数据库查询根本没机会运行!直接把这行删掉就行。

第二个问题:直接编码mysqli结果集对象而非实际数据

mysqli_query($con, $query)返回的是结果集对象,不是你要的表数据内容。你需要把结果集里的每一行数据提取出来,放到数组里再编码成JSON。

修改后的完整PHP代码

<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
session_start(); // 如果你不需要会话功能,可以考虑去掉这行,保留也不影响

// 初始化响应数组
$response = [];

// 建立数据库连接并检查连接错误
$con = mysqli_connect('localhost', 'root', '', 'projekt');
if (!$con) {
    // 连接失败时返回错误信息
    $response['error'] = '数据库连接失败: ' . mysqli_connect_error();
    echo json_encode($response);
    exit;
}

// 执行查询并检查查询错误
$query = "SELECT * FROM messages WHERE section='3'";
$result = mysqli_query($con, $query);
if (!$result) {
    $response['error'] = '查询失败: ' . mysqli_error($con);
    echo json_encode($response);
    exit;
}

// 从结果集中提取所有数据到数组
while ($row = mysqli_fetch_assoc($result)) {
    $response[] = $row;
}

// 编码并输出JSON数据
echo json_encode($response);

// 关闭数据库连接
mysqli_close($con);
?>

额外的AngularJS优化建议

你的GET请求不需要设置headers: { 'Content-Type': 'application/x-www-form-urlencoded' },因为GET请求没有请求体,这个Header是给POST表单提交用的。可以去掉这行,让请求更简洁:

$http({
    url: 'http://localhost/webpack/downloadMessage.php',
    method: 'GET'
}).then(function(response){
    console.log("CHECKED");
    console.log(response.data);
}, function(response) {
    alert('something wrong');
})

现在再运行代码,控制台应该就能输出messages表中section为3的所有数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:27:41