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
相关产品推荐
相关产品推荐

