gpt4 book ai didi

php - 如何递归获取此 MySQL 表中的 "parent ID"行?

转载 作者:行者123 更新时间:2023-11-29 01:24:58 25 4
gpt4 key购买 nike

我的数据库看起来像(pligg cms,示例数据)

id  catID parentID   catName
1 1 0 location
2 2 0 color
3 3 1 USA
4 4 3 Illinois
5 5 3 Chicago
6 6 2 Black
7 7 2 Red

比方说,我如何获得芝加哥的顶级 parentID,它应该是位置。

我是否在 php 中编写了递归函数,或者这在 mysql 中可行吗?

最佳答案

This网站对在 mysql 和 PHP 中存储分层数据的不同方法有一个很好的概述。要回答您的问题,最简单的方法是使用 php 和递归。您还可以使用其他方法,例如 modified preorder transversal,它不需要多个数据库查询。但是在处理大量插入和更新时,此方法的实现可能会更复杂。

另一个非常酷的方法也是我个人最喜欢的方法是 What is the most efficient/elegant way to parse a flat table into a tree? 中提到的所谓的“闭包表”/“邻接​​关系”

关于您的评论,您基本上必须创建一个循环或递归函数来选择芝加哥的父级,然后是父级的父级等等。

$stack = array();
$parent = 3;
while($parent != 0){
$data = (put your mysql to get the row with parentID = $parent)
$parent = data['parentID'];
$stack[] = $data;
}

$stack = array_reverse($stack);

Stack 将包含芝加哥的 parent (即位置,美国)

关于php - 如何递归获取此 MySQL 表中的 "parent ID"行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4006974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com