PHP社交网络阻止功能

时间:2018-07-07 17:48:46

标签: php html mysql

我一直在开发一个社交网络平台,最近我一直在尝试实现一项允许人们阻止其他用户的功​​能。我正在努力去实现它。

我的数据库有一个名为“ blocks”的表,该表有两列:“ userId”是已阻止其他用户的用户,而“ blockedUserId”是已被阻止的用户ID。我想从名为“ user”的表中选择该用户已阻止的所有用户,然后使用被阻止的用户名使用user表中的“ id”列选择该用户已阻止的帐户。

我遇到的另一个问题是实现一项功能,如果用户尝试访问已被阻止查看的用户个人资料,则该功能。

我有以下嵌套在类中的代码。该功能旨在在其个人资料页面上向用户显示他们已屏蔽的人员。

public static function BlockedUsers($_userInfo, $main) {
        // Show user the users they've blocked.
        $userId = $_userInfo['userId'];
        if (mysqli_num_rows(mysqli_query($main, "SELECT * FROM blocks WHERE userId='$userId'")) > 0) {

            $query = mysqli_query($main, "SELECT * FROM blocks WHERE userId='$userId'");

            while ($row = mysqli_fetch_assoc($query)) {

                $buid = $row['blockedUserId'];

                $query = mysqli_query($main, "SELECT * FROM blocks WHERE blockedUserId='$buid' and userId='$userId'");

                while ($row = mysqli_fetch_assoc($query)) {

                    $uid = $row['blockedUserId'];

                    $query = mysqli_query($main, "SELECT * FROM user WHERE id='$uid'");

                    while ($row = mysqli_fetch_assoc($query)) {
                        echo $row['username'];
                    }

                }

            }

        } else {
            echo "You haven't blocked anyone yet. ";
        }

我的帐户ID是1,还有其他ID:例如2、3、4。这些ID均与用户名相关联。这些ID将在“块”表的表列“ blockedUserId”中。相对于“用户”表中的“ id”列,应使用“块”表中的“ blockedUserId”来选择使用该ID的用户表中的所有用户。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这似乎可以通过嵌套的SQL查询轻松解决:

SELECT * FROM user WHERE userId IN (SELECT blockedUserId FROM blocks WHERE userId==1)

这将执行以下操作:方括号中的查询将收集与给定用户ID(在此例中为1)相对应的所有阻止的用户ID。总查询将从子查询的结果中包含userId的用户表中选择所有数据。

相关问题