mysql friendlist表结构

时间:2015-03-27 10:50:54

标签: php mysql

我创建了一个应用,我想添加一个功能,用户可以将其他用户添加到他们的朋友列表中#34;。

我不知道如何创建一个mysql表来存储这些数据,这是一个很好的结构:

一个包含2行的表,一行唯一行"用户"和一个朋友",在朋友行中,我将添加好友的用户名,如约翰,托马斯,萨姆,彼得等。

当我想显示朋友列表时,我只会搜索"用户"并显示来自" friends"的所有条目行。

1 个答案:

答案 0 :(得分:0)

最好的解决方案是制作两张桌子。

CREATE TABLE IF NOT EXISTS `users` (
  `user_id` int(10) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `friends` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `user_id` int(10) NOT NULL,
  `friend_id` int(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

如果您想添加好友,只需在好友列表中添加来自users表的唯一用户ID以及您想成为好友的人。

如果你想结交所有朋友:

 SELECT `users`.`username` FROM `friends` LEFT JOIN `users` ON `friends`.`friend_id` = `users`.`user_id` WHERE `friends`.`user_id` = '1' // with specific user id

它将返回user_id 1的朋友

$rs=$conn->query("SELECT `users`.`username` FROM `friends` LEFT JOIN `users` ON `friends`.`friend_id` = `users`.`user_id` WHERE `friends`.`user_id` = '1'");

$arr = $rs->fetch_all(MYSQLI_ASSOC);

foreach($arr as $row) {
  echo $row['username'];
}