提问人:Saurabh 提问时间:1/7/2023 最后编辑:ColleiflowerSaurabh 更新时间:1/7/2023 访问量:92
在PHP和MySQL的mlm模块中获取我下面的所有成员
Get all the members below me in an mlm module in PHP and MySQL
问:
我有一个数据库,如图所示,任何用户都可以使用任何发起人 ID 加入,他们将获得自己的用户 ID,可以进一步引导树。我想获取特定的详细信息,例如“2”。我期待其中的输出(因为直接链接到并直接链接到 与 )。同样,如果我选择 ,那么我会得到结果 (, where 和 直接链接到 和 间接链接到 )。user_id
user_id
3,4
3
2
4
3
2
user_id
1
user_id
2,3,4,5
2
5
user_id
1
3,4
1
我尝试了几乎所有可能的循环格式,但我就是无法获得输出。这是我代码的最后一部分,因为我已经删除了大部分代码: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'];
}
?>
任何形式的帮助都是值得赞赏的。如果问题有任何混淆,请随时向我询问详细信息。
答:
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。
评论
并bind_param
将任何数据添加到查询中。不要使用字符串插值或串联来实现此目的,因为您已经创建了严重的 SQL 注入错误。切勿将 或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。mysqli
$_POST
$_GET