Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将内部用户表与后续用户帖子连接起来?_Php_Mysql - Fatal编程技术网

Php 如何将内部用户表与后续用户帖子连接起来?

Php 如何将内部用户表与后续用户帖子连接起来?,php,mysql,Php,Mysql,我正试图从当前用户跟踪的人那里检索帖子以及他们的详细信息。我一直在研究,似乎加入是正确的方式,但我不确定它有什么问题 这是我的密码 $queryfeed = "SELECT posts.user_id, posts.body, posts.image, posts.has_image FROM posts, follows WHERE posts.user_id = follows.leader_id AND follows.follower_id =$user_id INNER JOIN

我正试图从当前用户跟踪的人那里检索帖子以及他们的详细信息。我一直在研究,似乎加入是正确的方式,但我不确定它有什么问题

这是我的密码

$queryfeed = "SELECT posts.user_id, posts.body, posts.image, posts.has_image 
FROM posts, follows WHERE posts.user_id =  follows.leader_id 
AND follows.follower_id =$user_id INNER JOIN users ON users.user_id 
= follows.leader_id";

$resultfeed = $db->query($queryfeed);
if($resultfeed->num_rows > 0) {
    while( $rowfeed = $resultfeed->fetch_assoc() ) {       
        if($rowfeed['posts.has_image'] == 1) {
    ?>
            <article class="post">
                <div class="post-head cf">
                    <a class="userpic" href=""><img src="<?php echo $userpic ?>" alt="<?php echo $rowfeed['users.username'] ?>"></a>
                    <a href="" class="username">
                        <?php echo $rowfeed[users.'username']; ?>
                    </a>
                </div>
                <img src="users/user_<?php echo $rowfeed['posts.user_id'] ?>/posts/<?php echo $rowfeed['posts.image']; ?>" alt="">
                <div class="post-body">
                    <div class="post-options">
                        <a class="likes" href="">2 likes</a>
                    </div>
                    <p>
                        <a class="username" href="">
                                <?php echo $rowfeed['users.username'] ?>
                        </a>
                        <?php echo $rowfeed['posts.body'] ?>
                    </p>
                    <hr />
                    <div class="cf">
                        <a class="like hide-text" href="javascript:;">Like This Post</a>
                        <form action="" class="comment">
                            <input type="text" placeholder="Add a comment">
                        </form>
                    </div>
                </div>
            </article>

   <?php } else { ?>

我现在无法访问计算机,但您的SQL查询似乎有一些错误。查看我的更正版本:

SELECT posts.user_id, posts.body, posts.image, posts.has_image FROM posts
INNER JOIN follows ON posts.user_id = follows.follower_id
WHERE follows.leader_id=$user_id;

从您最初的查询中,我发现您只对帖子的数据感兴趣(而不是发布它的用户的数据)。我假设$user_id保存当前用户的id,即一个值,该值也用作follower_id。如果是这种情况,查询会变得更容易:

选择p.user\u id、p.body、p.image、p.has\u image
从followers f内部连接posts p ON f.leader_id=p.user_id和f.follower_id=$user_id
如果您还对海报的用户数据感兴趣,请按以下方式更改查询:

选择p.user\u id、p.body、p.image、p.has\u image、u.username、u.avatar
从f
在f.leader\u id=p.user\u id和f.follower\u id=$user\u id上的内部连接帖子p
p.user\u id=u.user\u id上的内部连接用户u
尝试此查询:

SELECT
    posts.user_id, posts.body, posts.image, posts.has_image
    authors.avatar, authors.username
FROM
    posts
LEFT JOIN
    users as authors
ON
    authors.user_id=posts.user_id
LEFT JOIN
    follows
ON
    follows.leader_id=authors.user_id
WHERE
    follows.follower_id={$user_id}

仅使用左连接…

让我们假设当前user.user_id为1,追随者为user.user_id 2、3和4

我认为我们需要满足以下标准,对吗

posts.user\u id=followers.follower\u id
followers.leader\u id=$user\u id

所以这个查询应该是这样的,对吗

选择*
发帖
内部连接如下
ON posts.user\u id=followers.follower\u id
内部加入用户
如下所示。leader\u id=$user\u id

下面是模拟的表格示例


==用户===
用户id |用户名|化身
1电流
2赝品1
3赝品2
4赝品3

==职位===
post|u id | user|id | body | image |拥有| image
1          2
2          2
3          3
4          3
5          4
6          4

==如下===
领导者id |追随者id
1            2
1            3
1            4

这有意义吗?因为当前用户($user\u id)是追随者的领导者,所以如果您希望追随者的帖子而不是领导者的帖子…

Select*from posts p internal join users u on p.user\u id=u.user\u id其中。。。你的标准。这是一个简单的内心世界join@MueyiwaMosesIkomi如果我错了,请纠正我,但你所说的只是针对用户的帖子,不是吗?我试图从用户关注的人那里获取帖子,并将他们的头像和用户名与post一起显示。我将从帖子和用户表中获取所有信息。因此,您可以像正常情况下输出任何行一样输出该数据。基本上,您必须在您希望从中获取数据的两个表中加入您的条件匹配的位置。@MueyiwaMosesIkomi抱歉,您介意实际写下查询吗?我不明白它是如何检查用户是否在跟踪他们的。我尝试了这个方法,但没有成功:/而且我看不到对用户表的调用在哪里,因为它使用的是用户。user\u id这与我在尝试进行连接之前的原始查询类似,我从用户跟踪的人那里获取帖子。但问题是这些帖子不包含发帖人的用户名和图片(“头像”)。这就是我要研究的地方有一个区别:这里的条件是p.user\u id=u.user\u id上的
,它将海报的user\u id连接到用户的user\u id。因此,它应该为您提供相应帖子的用户。(抱歉-您还将其连接到了f.leader_id,所以应该是相同的)…是的,这就是我要找的!我以前的查询有效唯一的一件事是我有用户id=领导id,而不是发布id。非常感谢!
SELECT
    posts.user_id, posts.body, posts.image, posts.has_image
    authors.avatar, authors.username
FROM
    posts
LEFT JOIN
    users as authors
ON
    authors.user_id=posts.user_id
LEFT JOIN
    follows
ON
    follows.leader_id=authors.user_id
WHERE
    follows.follower_id={$user_id}