2014-02-14 78 views
0

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

但我的主要问题是,当我得到所有的朋友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?

DB的关系

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 ; 
+0

请发布您的数据库架构。并且'JOIN'可能是去这里的方式 – kero

+1

_“我应该为每个成员有一个数据库”_ _ _什么_ _当然不是。 //你应该更多地学习使用SQL处理数据的_basics_,因为它听起来像你知道现在很少。 – CBroe

+0

我已经添加了分贝。 CBroe。我确实知道它很愚蠢,但我找不到用一个数据库来完成的方法。 用户信息位于一个名为users的数据库中,其中包含更多信息,但与此相关的重要性是username和id – Mcclane654

回答

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