在PHP和MySQL的mlm模块中获取我下面的所有成员

Get all the members below me in an mlm module in PHP and MySQL

提问人:Saurabh 提问时间:1/7/2023 最后编辑:ColleiflowerSaurabh 更新时间:1/7/2023 访问量:92

问:

我有一个数据库,如图所示,任何用户都可以使用任何发起人 ID 加入,他们将获得自己的用户 ID,可以进一步引导树。我想获取特定的详细信息,例如“2”。我期待其中的输出(因为直接链接到并直接链接到 与 )。同样,如果我选择 ,那么我会得到结果 (, where 和 直接链接到 和 间接链接到 )。user_iduser_id3,432432user_id1user_id2,3,4,525user_id13,41

我尝试了几乎所有可能的循环格式,但我就是无法获得输出。这是我代码的最后一部分,因为我已经删除了大部分代码:while

<?php
include 'config.php';
$current_user='1';

$all = mysqli_query($con,"SELECT * FROM users");
while($all_array = mysqli_fetch_array($all)){
    $all_sponsors = $all_array['sponsor_id'];
}

$below_details = mysqli_query($con,"SELECT * FROM users WHERE sponsor_id ='$current_user'");
while ($below_array = mysqli_fetch_array($below_details)){
    $below_users = $below_array['user_id']; 
    }
?>

任何形式的帮助都是值得赞赏的。如果问题有任何混淆,请随时向我询问详细信息。

phpMyAdmin information

php mysql 数组 循环 while 循环

评论

0赞 Alex Howansky 1/7/2023
在关系数据库中存储树结构总是很痛苦
0赞 tadman 1/7/2023
警告:使用时,应使用参数化查询并bind_param将任何数据添加到查询中。不要使用字符串插值或串联来实现此目的,因为您已经创建了严重的 SQL 注入错误切勿将 或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。mysqli$_POST$_GET

答:

0赞 user1191247 1/7/2023 #1

您可以使用递归 CTE 来检索给定 ID 下的所有成员 -

WITH RECURSIVE pyramid AS (
    SELECT u.* FROM users u WHERE sponsor_id = 1 /* starting sponsor_id */
    UNION ALL
    SELECT u.* FROM pyramid p JOIN users u ON p.id = u.sponsor_id
)
SELECT * FROM pyramid;

评论

0赞 Saurabh 1/7/2023
多谢。。。我不知道你是谁,但有一件事是肯定的......你真棒 🙂
0赞 Saurabh 1/9/2023
此查询非常适合 localhost,但它无法在线工作......你能帮忙吗
0赞 user1191247 1/9/2023
您使用的是哪个版本的 MySQL?MySQL 8.0 中添加了通用表表达式(MySQL 8.0.11 - 2018-04-19,正式发布)
0赞 Saurabh 1/9/2023
这并不重要,因为无论我在线更改什么版本,它仍然显示相同的错误......
0赞 user1191247 1/9/2023
你得到什么错误,你使用的是什么代码?版本确实很重要,因为此查询需要 MySQL 8。