阅读量:0
在PHP中构建一个递归函数来查询自引用数据库表可以像下面这样:
function getChildren($parent_id, $conn) { $query = "SELECT * FROM your_table WHERE parent_id = $parent_id"; $result = mysqli_query($conn, $query); $children = array(); while ($row = mysqli_fetch_assoc($result)) { $child_id = $row['id']; $row['children'] = getChildren($child_id, $conn); $children[] = $row; } return $children; } // 假设$parent_id是根节点的ID $parent_id = 0; // 连接到数据库 $conn = mysqli_connect("localhost", "username", "password", "database"); // 调用递归函数获取所有子节点 $tree = getChildren($parent_id, $conn); // 关闭数据库连接 mysqli_close($conn); // 输出树结构 echo json_encode($tree);
在这个函数中,我们首先查询具有给定父ID的所有记录,并逐个迭代这些记录。对于每个记录,我们递归调用getChildren
函数,以获取其子节点,并将这些子节点作为记录的children
属性添加到结果数组中。最后,我们返回包含根节点及其所有子节点的树结构。
请注意,这只是一个简单的示例,实际应用中可能需要根据具体情况进行适当的修改和优化。