我正在尝试建立一个像facebook这样的搜索好友系统,但是我对结果有一个问题。结果不显示的朋友,它会显示所有的数据与两次。
我提出这个问题:
$uid = '1';
$key = 'john'
$result = mysqli_query($this->db,"
SELECT U.username,U.userid,U.userfullname, F.userone, F.usertwo, F.role
FROM users U, friends F WHERE U.username like '%$key' OR
U.userfullname like '$key%' OR U.username like '$key%' OR
U.userfullname like '%$key' OR U.username like '$key' OR
U.userfullname like '$key' AND F.userone=U.userid AND
F.userone='$uid' AND F.role='fri' AND F.userone = '$uid'
ORDER BY F.userone = '$uid' LIMIT 10") or die(mysqli_error($this->db));
用户数据表,
CREATE TABLE `users` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`userfullname` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
`userstatus` enum('0','1','2') NOT NULL DEFAULT '0',
PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
INSERT INTO `users` (`userid`, `username`, `userfullname`,`userstatus`) VALUES
(1, 'john', 'John Doe', '0'),
(2, 'aziz', 'aziz', '0'),
(3, 'selma', 'Selma Kose', '0');
好友表
CREATE TABLE `friends` (
`friendid` int(11) NOT NULL AUTO_INCREMENT,
`userone` int(11) DEFAULT NULL,
`usertwo` int(11) DEFAULT NULL,
`role` enum('flwr','fri') NOT NULL DEFAULT '1',
PRIMARY KEY (`friendid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
INSERT INTO `friends` (`friendid`, `userone`, `usertwo`, `role`) VALUES
(1, 1, 1, 'me'),
(2, 2, 2, 'me'),
(3, 3, 3, 'me'),
(4, 2, 1, 'fri'),
(5, 2, 3, 'flwr'),
(6, 3, 1, 'fri');
请认为你正在搜索你的朋友,你的用户id是1,你正在搜索aziz查询检查aziz是你的朋友( fri or flwr
)从朋友表如果是,然后显示结果。但我的查询显示的是所有用户,而不仅仅是朋友。
在这方面有人能帮我吗?
结果必须只针对johnusername,但它显示所有用户两次。
这是一个演示
1条答案
按热度按时间23c0lvtd1#
尝试此查询:
它将返回id=2的用户的所有朋友,即
john
.演示