0

我如何制作一个类似 Twitter 的关注系统,如果您关注某人,您将收到他们的推文。我有一个名为“users”、“followings”和“posts”的数据库表。users 表包含我网站上的用户。以下显示人员关注者,此表设置如下:'id,user_one,user_two'。帖子表包含唯一用户拥有的所有推文或帖子。

我为每个用户设置了一个个人资料页面,并带有一个关注按钮。而且我还有一个用户的新闻提要,但在那个新闻提要中,我需要它来显示登录用户正在关注的用户的帖子。无论如何,我是否可以让用户关注某人并在他们的新闻提要上接收该用户的帖子。

现在我做了一些研究:他们的系统似乎无法正常工作。我不断收到此错误:

警告:implode() [function.implode]:第 12 行的 function.php 中传递的参数无效

SELECT 
  user_id, 
  body, 
  stamp 
FROM posts 
WHERE user_id in () 
ORDER BY stamp DESC

警告:mysql_fetch_object():提供的参数不是 function.php 中有效的 MySQL 结果资源。

这里的这条线是为了帮助你关注那个人时你会在那里收到推文和东西

function show_posts($userid,$limit=0){
$posts = array();

$user_string = implode(',', $userid);
$extra =  " and id in ($user_string)";

if ($limit > 0){
    $extra = "limit $limit";
}else{
    $extra = '';    
}

$sql = "select user_id,body, stamp from posts 
    where user_id in ($user_string) 
    order by stamp desc $extra";
echo $sql;
$result = mysql_query($sql);

while($data = mysql_fetch_object($result)){
    $posts[] = array(   'stamp' => $data->stamp, 
                        'userid' => $data->user_id, 
                        'body' => $data->body
                );
}
return $posts;

}

我相信这段代码应该显示其他用户的帖子,导致了这个问题,但我不知道为什么。

4

1 回答 1

0

使用连接。例如:

select user_id, text from posts
    inner join followings on posts.user_id = followings.followed_id
    where followings.follower_id = :user_id;

如果我可以推荐,请停止使用这些mysql_功能;它们已被弃用,不应在较新的应用程序中使用。相反,我建议使用PDO

于 2013-04-11T03:59:00.613 回答