我想用Facebook风格做一个朋友搜索部分。但是我只想将我的朋友放在一个朋友表中。我的表格在此 DEMO 中。
$result = mysqli_query($this->db,"
SELECT U.username
, U.userid
, U.userfullname
, UT.username
, UT.userid
, UT.userfullname
, F.role
FROM friends F
JOIN users U
ON F.userone = U.userid
JOIN users UT
ON F.usertwo = UT.userid
WHERE U.username Like '%$key'
OR UT.userfullname Like '$key%'
OR UT.username Like '$key%'
OR UT.userfullname Like '%$key'
OR UT.username Like '$key'
OR UT.userfullname Like '$key'
AND F.userone = '$uid'
AND (F.role='fri' OR F.role = 'flwr')
ORDER
BY F.userone
LIMIT 10
") or die(mysqli_error($this->db));
while($row=mysqli_fetch_array($result,MYSQLI_ASSOC)) {
$data[]=$row;
}
if(!empty($data)) {
return $data;
}
正在搜索的人的用户ID($uid
)是1
,关键字是例如aziz,因为方位角的userid
是2
,并且如果您检查了朋友,表userone
(1
)和usertwo
(2
)是那里的朋友。我们怎么知道他们是朋友,因为role
是fri
。您也可以在 DEMO 页中看到它。
现在,这是什么问题!问题是,当$ uid(1)搜索他/她的朋友时,查询还显示了角色='me',但我只想显示F.role='fri' OR F.role = 'flwr'
。我的查询有什么问题。
答案 0 :(得分:1)
怎么样...
SELECT U.username
, U.userid
, U.userfullname
, UT.username
, UT.userid
, UT.userfullname
, F.role
FROM friends F
JOIN users U
ON F.userone = U.userid
JOIN users UT
ON F.usertwo = UT.userid
WHERE (
U.username Like '%$key'
OR UT.userfullname Like '$key%'
OR UT.username Like '$key%'
OR UT.userfullname Like '%$key'
OR UT.username Like '$key'
OR UT.userfullname Like '$key'
)
AND F.userone = '$uid'
AND F.role IN('fri','flwr')
ORDER
BY F.userone
LIMIT 10
请注意,您仍然可以使用这种方法进行注射。