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}