我创建了一个应用程序,我想添加一个功能,用户可以将其他用户添加到他们的"朋友列表"中。
我不知道如何创建一个mysql表来存储这些数据,这是一个好的结构吗:
一个有2行的表,一个唯一行"用户"和一个"朋友",在朋友行中,我将添加朋友的用户名,如"John,Thomas,Sam,Peter"。
当我想显示朋友列表时,我只会搜索"用户"并显示"朋友"行中的所有条目。
最好的解决方案是制作两个表。
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 ;
如果你想添加一个朋友,只需添加用户表中唯一的用户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'];
}