PDO:为什么我无法发布自己的帖子,但我可以在MySQL数据库之后提取用户的帖子

时间:2017-06-09 11:55:38

标签: php mysql pdo

我的SQL代码有问题。我正在尝试使用PDO创建像facebook这样的新闻源。我的问题是,我能想到的最好的是它拉动了用户的所有帖子,而不是我自己的帖子。似乎无法找到问题。

继承数据库结构:

user_table:user_id, username, name

帖子:post_id, body, user_id, likes

粉丝:id, user_id, follower_id

连接脚本:     

 class DB {

    private static function connect() {
            $pdo = new PDO ('mysql:host=localhost;dbname=test;charset=utf8','root','');
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $pdo;
    }

    public static function query($query, $params = array()) {
            $statement = self::connect()->prepare($query);
            $statement->execute($params);
            if (explode(' ', $query)[0] == 'SELECT') {
            $data = $statement->fetchAll();
            return $data;
            }
    }
 }

?>`
用于提取帖子的

脚本:

$posts = DB::query('SELECT posts.post_id, posts.body, posts.likes, users_table.`username`, users_table.`name` FROM users_table, posts, followers
WHERE posts.user_id = followers.user_id
AND users_table.user_id = posts.user_id
AND follower_id = :userid
ORDER BY posts.posted_at DESC', array(':userid'=>$userid));

有什么想法吗?一直在互联网上寻找解决方案,似乎无法找到我们正在寻找的东西。

2 个答案:

答案 0 :(得分:0)

因为您只按照

中的说明选择了关注者的帖子
WHERE posts.user_id = followers.user_id

所以,你可以改变那条线,

WHERE posts.user_id = followers.user_id or posts.user_id = user.user_id

user.user_id指的是您自己的ID

答案 1 :(得分:0)

此问题的最佳解决方案是让当前用户自行关注以获取自己的帖子并显示在当前用户的新闻源上。