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

PHP使用UNION联合查询两张表失败,报错No Data Found求排查

问题分析与解决方案

你的代码存在三个核心问题,导致无法正常获取并展示两张表的数据:

  • SQL语句错误:UNION要求两个查询返回的列数、对应列的数据类型必须完全匹配。如果topic和Image表的结构不一致(比如列数不同、列类型不兼容),这条SQL会直接执行失败,mysqli_query返回false,触发else分支返回No Data Found。
  • 循环逻辑冗余且存在bug:你在while循环里重复对整个数组编码JSON,完全没必要;且while($row[] = $resultAll->fetch_assoc())的写法会在数组末尾多存入一个null值(因为最后一次fetch_assoc返回false,会被存入$row)。
  • 未处理查询成功但无数据的场景:如果SQL执行成功但两张表都没有数据,循环不会执行,$json变量会未定义,导致输出错误。

分场景解决方案

场景1:两张表结构完全相同(列数、类型一致)

如果是想合并两张表的结果展示,修正SQL并优化代码:

require_once 'cont.php';
// 用UNION ALL代替UNION(无需去重时性能更好)
$resultAll = mysqli_query($con, "SELECT * FROM topic UNION ALL SELECT * FROM Image");
if ($resultAll) {
    $data = [];
    // 循环收集所有数据
    while ($row = $resultAll->fetch_assoc()) {
        $data[] = $row;
    }
    // 判断是否有数据,无数据时返回提示
    $json = empty($data) ? json_encode(["result" => "No Data Found"]) : json_encode($data, JSON_NUMERIC_CHECK);
} else {
    // SQL执行失败时返回错误信息,便于调试
    $json = json_encode([
        "result" => "SQL Execute Failed",
        "error" => mysqli_error($con)
    ]);
}
echo $json;
$con->close();
?>

场景2:两张表结构不同(更常见的情况)

如果两张表结构不一致,不能使用UNION,需分别查询后合并结果:

require_once 'cont.php';
$response = [];

// 查询topic表数据
$resultTopic = mysqli_query($con, "SELECT * FROM topic");
if ($resultTopic) {
    $topicData = [];
    while ($row = $resultTopic->fetch_assoc()) {
        $topicData[] = $row;
    }
    $response['topic'] = empty($topicData) ? "No Data in topic" : $topicData;
} else {
    $response['topic'] = "Query Failed: " . mysqli_error($con);
}

// 查询Image表数据
$resultImage = mysqli_query($con, "SELECT * FROM Image");
if ($resultImage) {
    $imageData = [];
    while ($row = $resultImage->fetch_assoc()) {
        $imageData[] = $row;
    }
    $response['image'] = empty($imageData) ? "No Data in Image" : $imageData;
} else {
    $response['image'] = "Query Failed: " . mysqli_error($con);
}

$json = json_encode($response, JSON_NUMERIC_CHECK);
echo $json;
$con->close();
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 05:05:24