php - 显示以下用户帖子

标签 php html mysql sql posts

所以我有一个我正在做的项目,您可以在其中“关注”另一个用户,并与其他用户一起查看他们的帖子。就像 Facebook 一样。像这样的东西

Bob: I love SO
Alex: I love SO too
Ally: Me three! 

这就是我目前所做的。我正在选择登录用户关注的人,所有这些人都存储在名为 followers 的表中。这是它的样子

+-----+-------------+-----------+
| id  | follow_from | follow_to |
+-----+-------------+-----------+
| 319 | bob         | alex      |
| 320 | ally        | alex      |
| 320 | alex        | ally      |
+-----+-------------+-----------+

如您所见,它显示了用户以及他们关注的人。这就是我检索你关注的人列表的方式

SELECT * FROM followers WHERE follow_from = :username  

现在它会返回

Bob
Alex
Ally 

现在进入帖子。我将帖子存储在另一个名为“帖子”的表中。这是它的样子

+----+-----------+---------+-----------+--------------+------------+
| id | post_user | post_ip | post_date | post_content | post_likes |
+----+-----------+---------+-----------+--------------+------------+
|  1 | alex      | ::1     |           | I like cats  | 0          |
+----+-----------+---------+-----------+--------------+------------+

所以我假设 BobAlly 看到了 alex 的帖子。我遇到的问题是检索帖子并将它们基本上合并 在一起。由于我的帖子在另一个表中,我无法找到一种方法来确定哪个帖子是哪个。

我试过了

SELECT * FROM posts WHERE followed_user=:username ORDER BY post_date DESC 

但无法找到一种方法来使用 :username 和多个用户名。跟追随者一样。所以基本上我的问题是,如何在一面墙上显示来自多个用户的多个帖子。或者,如果有人可以解决我如何从您关注的多个人中选择帖子的问题。

只是在我执行 SELECT * FROM followers WHERE follow_from = :username 并运行

时添加
$posts = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
    $posts[] =  array(
    'follow_to' => $row['follow_to']
);
}    

然后做

foreach($posts as $post) {
            echo $post['follow_to'];
}

我得到了关注者列表,所以我认为这与检索帖子有关。

最佳答案

您正在寻找 JOIN/Subquery,

SELECT
    *
FROM
    posts
WHERE
    post_user IN 
    (
        SELECT follow_to FROM followers WHERE follow_from = :user
    )

更新

如果您想加载一个人和关注者的帖子列表,

SELECT
    *
FROM
    posts
WHERE
    post_user IN 
    (
        SELECT 
            follow_from 
        FROM 
            followers 
        WHERE 
            follow_to = :user 
            OR
            follow_from = :user 
    )

关于php - 显示以下用户帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24592470/

相关文章:

javascript - javascript 和 jquery 的不同行为

MySql性能问题: MD5(value)

php - 如何在 Ubuntu 14.04 中安装 PHP 国际扩展

javascript - 尝试使用 Javascript/Angular 在第一次出现的字符下划线

css - 正常流中的 Div 重叠

mysql - 如何在不重启数据库服务器的情况下解决MySQL的.MYI文件损坏问题?

mysql - 使用 MySQL Workbench 更新同一列中的多个值

php - 如何安全地将数据库连接变量传递到新页面?

php - 如何将 laravel 5.3 项目放在共享主机上

php - jquery pjax 与 php。重新加载时没有内容