【问题标题】:Managin friends in mysql database for social networking site在社交网站的mysql数据库中管理朋友
【发布时间】:2014-02-14 11:03:27
【问题描述】:

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

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

【问题讨论】:

  • 请发布您的数据库架构。 JOIN 可能是去这里的方式
  • “我应该每个成员拥有一个数据库”什么?当然不是。 // 你应该去了解更多关于使用 SQL 处理数据的基础,因为听起来你现在知道的地方很少。
  • 我已经添加了数据库。 CB罗。我确实知道它很愚蠢,但我找不到用一个数据库来做这件事的方法。用户信息位于名为 users 的数据库中,其中包含更多信息,但与此相关的重要性是用户名和 id

标签: php mysql social-networking friend


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多