php - 加入后只识别已注册的群组?

标签 php mysql sql database join

我正在尝试选择用户已注册的组(在成员表中指定) 并在用户所属的所有组的一页上显示更新,但每次它都会显示已创建的每个组的更新,即使它们不是成员。那么如何才能只显示用户加入这些更新的组呢?

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

    $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

关于php - 加入后只识别已注册的群组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26159763/

相关文章:

mysql - 如何对查询结果使用子查询,然后对每行的计算结果进行 ORDER BY?

mysql - 如何将此 ER 图转换为关系模式

php - 当我键入时从 MySQL 填充多个输入字段

php - 禁用 "magic quotes"后,为什么 PHP/WordPress 继续自动转义我的 POST 数据?

mysql - 第一个带有注释的 Hibernate 类

mysql - 如何使用 Objective C 将推送通知和其他用户设置的设备 token 发送到服务器上的 sql 表

php - 在特定时间段后从数据库表中删除一行

php - 在 WooCommerce 中禁用所有基于用户国家/地区 geo-ip 的付款方式

php - 使用 PHP 从 MySQL 过滤时间和日期数据

php - 存储过程在后台执行?