我正在做一个微博网站。用户可以互相关注。我必须根据当前用户关注的用户(如 Twitter)为当前用户( $userid )制作帖子流(活动流)。我知道实现这一点的两种方法。哪一个更好?
表:
表:帖子
列:PostID、AuthorID、TimeStamp、Content
表:关注
列:海报、关注者
第一种方式,通过加入这两个表:
select `posts`.* from `posts`,`follow` where `follow`.`follower`='$userid' and
`posts`.`AuthorID`=`follow`.`poster` order by `posts`.`postid` desc
第二种方法是通过创建一个用户数组 $userid 正在关注(海报),然后在这个数组上执行 php 内爆,然后在其中执行:
我想在这里告诉你的一件事是我正在存储数字用户在 `user` 表的 `following` 记录中关注的用户数,所以在这里我将使用这个数字作为提取海报列表时的限制 - 'followingList':
function followingList($userid){
$listArray=array();
$limit="select `following` from `users` where `userid`='$userid' limit 1";
$limit=mysql_query($limit);
$limit=mysql_fetch_row($limit);
$limit= (int) $limit[0];
$sql="select `poster` from `follow` where `follower`='$userid' limit $limit";
$result=mysql_query($sql);
while($data = mysql_fetch_row($result)){
$listArray[] = $data[0];
}
$posters=implode("','",$listArray);
return $posters;
}
现在,我有一个逗号分隔的用户 ID 列表,当前 $userid 正在遵循该列表。
现在选择帖子以制作活动流:
$posters=followingList($userid);
$sql = "select * from `posts` where (`AuthorID` in ('$posters'))
order by `postid` desc";
这两种方法哪个更好?并且可以知道关注的总数(当前用户关注的用户数量),在第一种方法中使事情变得更快,就像在第二种方法中一样?
还有其他更好的方法吗?