query表示不希望发生的事件

rkttyhzu  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(200)

我想做一个facebook风格的朋友搜索区。但我只想把我的朋友放在一张朋友桌上。我的table在这个演示中。

$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 关键是因为阿齐兹的 userid2 如果你查一下朋友表 userone ( 1 )以及 usertwo ( 2 )有朋友在那。我们怎么知道他们是朋友,因为 rolefri . 你也可以在演示页面看到它。
现在,有什么问题!问题是当$uid(1)搜索他/她的朋友时,查询也显示role='me',但我只想显示 F.role='fri' OR F.role = 'flwr' . 我的问题是什么。

k3fezbri

k3fezbri1#

怎么样。。。

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

请注意,您仍然可以使用这种方法进行注入。

相关问题