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

PHP从MySQL获取指定parentId的所有行失败,仅返回1条记录

解决表单获取指定parentId所有行的问题

嘿,我一眼就看出问题啦——你这段代码只调用了一次$stmt->fetch(),所以只能拿到查询结果里的第一条记录,自然数组里只有一条数据~要获取所有符合条件的行,咱们得用循环遍历整个结果集才行。

修改后的代码

public function getChildByParent($parentId) {
    // 注意:原SQL里的表名是childId?如果是笔误记得改成实际表名哦
    $stmt = $this->conn->prepare("SELECT childId, nick, relation FROM childId WHERE parentId = ?");
    $stmt->bind_param("s", $parentId);
    $stmt->execute();
    $stmt->bind_result($childId, $nick, $relation);
    
    // 初始化一个空数组,用来存放所有符合条件的记录
    $childList = array();
    
    // 循环调用fetch(),直到没有更多数据返回
    while ($stmt->fetch()) {
        // 每次循环创建一个新数组存储当前行的数据
        $child = array(
            'childId' => $childId,
            'nick' => $nick,
            'relation' => $relation
        );
        // 把当前行数据加入总列表
        $childList[] = $child;
    }
    
    // 记得关闭语句,释放数据库资源
    $stmt->close();
    
    return $childList;
}

关键修改点说明

  • 循环遍历结果集:用while ($stmt->fetch())来循环,fetch()每次会读取结果集的下一行,直到没有数据时返回false,循环结束,这样就能拿到所有符合条件的记录了。
  • 存储多条记录:把原来的单个$user数组改成$childList数组,每次循环把单条记录的数组追加进去,最后返回这个包含所有数据的数组。
  • 资源释放:添加$stmt->close()来关闭预处理语句,避免资源浪费。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:43:46