在社交网站的mysql数据库中管理朋友

时间:2014-02-14 11:03:27

标签: php mysql social-networking friend

我一直在寻找这个观看了几个视频的答案,但我似乎无法找到一个好的答案。我想在我的网站上建立一个朋友系统。我目前设置了多个系统,我认为是对的。我应该每个成员有一个包含他们所有朋友的数据库吗?

但我的主要问题是当我得到所有的朋友ID。我怎么得到他们的名字?我可以使用它为每个成员连接一次数据库。

<?php foreach ($friend as $person) {
friend_names[] = mysqli_query($con, "SELECT username FROM users WHERE id='$person'");
} ?>

但是在一个查询中没有更简单的方法来完成所有操作。我已经尝试使用不同的连接,但随后它写下数据库中的所有名称,而不仅仅是已登录的用户朋友。所以我必须为每个包含朋友ID的成员使用一个数据库。而且当我使用

SELECT users.username
FROM relationships
INNER JOIN users ON relationships.user_1 = users.id

它也添加了我的用户名。任何人都可以解释我应该怎么做。所以我不必坐在youtube上听人们解释一个函数是如何工作的:S?

关系数据库

CREATE TABLE IF NOT EXISTS `relationships` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_1` int(11) NOT NULL,
`user_2` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

1 个答案:

答案 0 :(得分:0)

select users.username 
from relationships 
inner join users on relationships.user_2=users.id     
and relationships.user_1=2;

您需要在数据库中使用它。您只需使用会话用户ID更改末尾的代码(relationships.user_1 = 2):)

编辑: 在一个查询中获取所有内容。我还为状态添加了一行(阻止,朋友,待处理请求):

SELECT users.username
FROM relationships 
INNER JOIN users ON ((relationships.user_1 = users.id AND relationships.user_2='$user')
or (relationships.user_2 = users.id AND relationships.user_1='$user'))
and relationships.status=1