繁体   English   中英

加入才能识别仅注册的组?

[英]Get Join To Recognize Only Registered Groups?

我正在尝试选择在成员表中指定的用户已注册的组,并在用户所属的所有组的一页上显示更新,但是每次它不断显示来自每个组的更新时创建,即使他们不是成员。 因此,如何确保仅显示用户加入这些更新的组?

到目前为止,这是我的查询:

    $select_posts_from_groups_query = $db->query("SELECT spud_groups_posts.post_body,spud_groups_posts.group_url,spud_groups_members.member_name
         FROM spud_groups_posts LEFT JOIN spud_groups_members ON spud_groups_posts.post_body = spud_groups_members.member_name");


        while($select_posts_from_groups_array = $db->fetch_array($select_posts_from_groups_query)) {

            $group_url_id = $select_posts_from_groups_array['group_url'];
            $post_body = $select_posts_from_groups_array['post_body'];

            $select_group_data_from_posts_query = $db->query("SELECT * FROM spud_groups WHERE gid='$group_url_id'");
            $select_group_data_from_posts_array = $db->fetch_array($select_group_data_from_posts_query);
            $group_name_data = $select_group_data_from_posts_array['group_name'];


                #$group_name_data = false;
            echo "<div class='mx'> 
        <p> <h2> $group_name_data </h2></p>
        $post_body</div>
<br>
        ";
    }

以前从未做过SQL连接,所以这就是原因。

首先,一个好的做法是使用别名,以便您的代码看起来更好

SELECT 
    gr.post_body,
    gr.group_url,
    mem.member_name
FROM 
    spud_groups_posts gr
    LEFT JOIN spud_groups_members mem ON 
        gr.post_body = mem.member_name

该查询会给你从表中的所有结果spud_groups_posts从和匹配结果spud_groups_members

您应将LEFT JOIN替换为JOIN或INNER JOIN(相同的结果)。


正如你在留言中提到你的ResultSet是空的-这意味着你有没有匹配值列post_body从表spud_groups_postsmember_namespud_groups_members

在选择中,您正在使用LEFT JOIN。 因此,选择了所有组。

您必须改为使用INNER JOIN。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM