【发布时间】:2021-10-11 00:04:11
【问题描述】:
我想知道是否有人可以帮助我/指出正确的方向。
我有一个数据库,其中包含一个包含增量 id、名称、唯一 id 和虚构角色的父 uuid 的表。
表格显示以下人员...
John (Parent not listed)
Steve (Parent listed as John)
Mark (Parent listed as John)
Kevin (Parent listed as Steve)
Adam (Parent listed as Mark)
**ID, NAME, UUID, PARENT_UUID**
1, John, 0001, none
2, Steve, 0002, 0001
3, Mark, 0003, 0001
4, Kevin, 0004, 0002
5, Adam, 0005, 0003
所以在这个例子中,约翰有 2 个儿子,史蒂夫和马克......他们每个人都有一个儿子,凯文和亚当。
我想做的是(在已创建的个人资料页面上)显示家庭成员的数量。
所以转到 Johns 页面,我会看到“John (4 Descendents)”,如果我转到 Marks 页面,我会看到“Mark (1 Descendents)”
请允许我列出在表中找到的低代家庭成员的数量。
我可以打印所有家庭成员的列表...使用:
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["uuid"]. "<br>";
}
}
但现在我想找出每个 $row['uuid'] 每个条目有多少后代。
我尝试执行以下操作:
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$sql = "SELECT * FROM users WHERE parent_uuid = '".$row['uuid']."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$numOfDescendents = $result->num_rows;
}
}
}
但后来我意识到这不仅行不通(它会抓取第一行的编号并停止),使用这个逻辑,如果我有一个有 20 多代人的家庭,我将需要有20 多个 while 循环相互嵌套,检查每一代。
所以我想知道,这甚至可能吗?
可能有一个简单的方法,但经过 3/4 天的头痛和沮丧后,我终于寻求帮助 =)
我的最终目标是创建一个 php 文件,用于检查所有用户的表,并通过计算表中有多少人使用他们的 uuid 作为 parent_uuid 来计算他们的后代...如开头的示例所示。 .. John 有 4 个,Mark 有 1 个,Steve 有 1 个,Kevin 有 0 个,Adam 有 0 个。
提前感谢您的任何指导 =)
【问题讨论】:
标签: php mysql arrays recursion while-loop