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

mysqli查询无返回结果,代码调试遇阻寻求技术帮助

排查mysqli子查询无返回结果的问题

看起来你的数据库连接没问题,但查询没返回预期结果,咱们一步步来定位问题:

  • 先验证SQL本身是否能返回数据
    直接把这段SQL复制到你的数据库管理工具(比如phpMyAdmin、MySQL Workbench)里执行:

    SELECT `Namn`, `Efternamn` FROM `Elever` WHERE `ID` IN (SELECT `Användar ID` FROM `Elevgrupper` WHERE `Grupp ID` = 25)
    

    如果这里就没结果,那问题出在数据层面:要么Grupp ID=25的记录压根不存在,要么对应的Användar ID在Elever表里找不到匹配项,或者是表名/字段名的大小写不匹配(MySQL在Linux系统下表名是区分大小写的)。

  • 获取mysqli的具体错误信息
    你的代码只判断了$res是否为空,但没拿到具体的错误详情。修改代码把错误信息打出来,能帮你快速定位问题:

    $sql = "SELECT `Namn`, `Efternamn` FROM `Elever` WHERE `ID` IN (SELECT `Användar ID` FROM `Elevgrupper` WHERE `Grupp ID` = 25)";
    $res = $link->query($sql);
    if (!$res) {
        // 输出具体错误内容
        echo "查询出错: " . $link->error;
        exit;
    }
    

    比如如果是语法错误、权限不足这类问题,这里会明确告诉你原因。

  • 正确处理结果集
    你直接echo $res只会输出mysqli_result对象的字符串标识,不是实际的查询数据。要检查是否有记录,然后读取数据:

    // 检查结果行数
    if ($res->num_rows === 0) {
        echo "没有找到匹配的学生记录";
    } else {
        // 遍历所有查询结果
        while ($row = $res->fetch_assoc()) {
            echo "姓名: " . $row['Namn'] . " " . $row['Efternamn'] . "<br>";
        }
    }
    

    有时候查询本身是成功的,但就是没有匹配的数据,这时候$res是有效的对象,但num_rows会是0。

  • 再次确认字段名的正确性
    你的字段名带空格和特殊字符(比如Användar ID),虽然你已经用反引号包裹了,但还是要再确认一遍这些字段名在数据库里确实存在,拼写完全一致。

先按这几步排查,应该就能找到问题所在了。

内容的提问来源于stack exchange,提问作者helmjävel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:15