【问题标题】:Get data of User's referrer and referrer's referrer in phpphp中获取User的referrer和referrer的referrer数据
【发布时间】:2020-07-14 12:38:45
【问题描述】:

其实我卡在这里,我想获取当前用户的数据和当前用户的推荐人数据和推荐人的推荐人数据。

比如A是第一个用户,B是第二个,C是第三个,D是第四个。如果用户 A 已登录,则查询应首先获取用户 A 的数据,在该数据下应该有用户 B 的数据,因为用户 B 是由用户 A 引用的,在 B 下应该有用户 C 的数据,因为用户 C 被用户 B 推荐给用户 D,依此类推。

这些所有数据都应显示在用户 A 的登录名下。我目前通过此查询仅获得 1 个推荐人数据:

    $querySelect = "Select * from tbl_users where UserID = '$UID'";
    $resultSelect = mysqli_query($conn,$querySelect);
    $numSelect = mysqli_num_rows($resultSelect);
    $FetchedSelect = mysqli_fetch_assoc($resultSelect);

if($numSelect > 0)
{
   $refID = $FetchedSelect['refID'];

//some code to show the the table data...
}

    $querySelect1 = "Select * from tbl_users where UserID = '$refID'";
    $resultSelect1 = mysqli_query($conn,$querySelect1);
    $numSelect1 = mysqli_num_rows($resultSelect1);
    $FetchedSelect1 = mysqli_fetch_assoc($resultSelect1);

if($numSelect1 > 0)
{
   //do some codes to show the table data 
}

这样我只得到了两个用户的数据,即当前用户和当前用户的推荐人。但是我想获取我在这篇文章顶部提到的所有用户数据。我怎样才能做到这一点?

【问题讨论】:

  • 添加第三个查询?
  • 欢迎。也许这个答案可以帮助你?:stackoverflow.com/a/33737203/694400
  • @Wieger 这是一个很好的答案,但它并没有解决我的问题,它给了我给定用户 ID 下的数据。但我想获取我已经(当前登录的用户)的用户 ID 上侧的数据,另外,我只想获得上侧的 5 个用户。比如登录的用户id是30,查询应该得到30(登录用户)、29、28、27、26、25(上面一行都是互相的referrer)的数据。如何获取上线数据而不是下线数据?
  • 警告:当使用mysqli 时,您应该使用parameterized queries 和bind_param 将任何数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST、$_GET或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • 注意:object-oriented interface to mysqli 明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆,因为缺少单个i 会导致麻烦。示例:$db = new mysqli(…) 和 $db->prepare("…") 程序接口是 PHP 4 时代的产物,不应在新代码中使用。

标签: php mysql sql mysqli


【解决方案1】:

我从stackoverflow 的另一个线程中挖掘得到了答案。这是我从同一张表中仅获取 5 个上线用户数据的正确查询:)

SELECT T2.UserID, T2.Reff_User,T2.Username 
FROM ( SELECT @r AS _id, (SELECT @r := Reff_User FROM tbl_users WHERE UserID = _id) AS ref_user, @l := @l + 1 AS lvl 
FROM (SELECT @r := 32, @l := 0) vars, tbl_users m WHERE @r <> 0) T1 
JOIN tbl_users T2 ON T1._id = T2.UserID ORDER BY T1._id DESC LIMIT 5

这里是主题链接:

Finding all parents in mysql table with single query (Recursive Query)

@sel answer 解决了我的问题。谢谢你的stackover流程,特别是@sel。

【讨论】:

    猜你喜欢
    • 2013-09-29
    • 2019-04-27
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2013-10-19
    • 2017-12-04
    相关资源
    最近更新 更多