php - mysql 好友列表表结构

标签 php mysql

我创建了一个应用程序,我想添加用户可以将其他用户添加到他们的“好友列表”的功能。

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

一张有 2 行的表,一行唯一行“用户”和一行“ friend ”,在 friend 行中,我将添加 friend 的用户名,例如“John、Thomas、Sam、Peter” ”。

当我想显示 friend 列表时,我只需搜索“用户”并显示“ friend ”行中的所有条目。

最佳答案

最好的解决方案是制作两个表。

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 ;

如果您想添加 friend ,只需添加用户表中的唯一用户 ID 以及 friend 表中您想成为 friend 的人即可。

如果你想获得所有 friend :

 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'];
}

关于php - mysql 好友列表表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29298949/

相关文章:

php - Codeigniter MySQL 查询

mysql - 从 Adob​​e flex/AIR 访问 mysql

mysql - UPDATE MySQL 查询执行时间较长 - 优化方法

php - 将更改后的文件名存储到 mysql 字段中

php - 我的 PHP 页面上的 SQL 中的 Find 方法找到所有内容,即使记录为空

php - 使用 PHP 在 CSV 文件中用双引号括起每个字段?

php - 如何使用 PHP 确定 gif 循环的次数

php - 如何在php中找到一个范围内的数值

php - 使用 PHP (Foreach) 连接两个不同服务器中的两个表

php - Mysql php,不同项目类型不同表