首页 > 解决方案 > 如何让我在 mysqli 上关注的人?

问题描述

因此,我有一个名为 和 列的表格,follow_sys我想显示我关注的人,但不要将我作为待处理的朋友请求返回我尝试自我加入,但它没有用idfollowerfollowing

$sqlFollowing = "SELECT * from follows_syds t1, follows_syds t2
    where
    t1.follower = ?
    and
    t1.following != ?
    and
    t2.follower != ?
    AND
    t2.following != ?";

$Following       = $conn -> prepare($sqlFollowing);
$Following       -> bind_param('ssss',$metUser,$metUser,$metUser,$metUser);
$Following       -> execute();
$FollowingGET    = $Following -> get_result();
$FollowingRows   = $FollowingGET -> num_rows;

我尝试过这样的事情,但结果仍然不准确

$sqlFollowing      = "SELECT * from follows_syds t1
                                 INNER join follows_syds t2 on
                                 t1.follower = t2.following
                                 where
                                 t2.follower = ?
                                 and
                                 t1.following = ?
                                 group by t2.id";
$Following         = $conn -> prepare($sqlFollowing);
$Following        -> bind_param('ss',$getUser,$getUser);
$Following        -> execute();
$FollowingGET      = $Following -> get_result();
$FollowingRows     = $FollowingGET -> num_rows;

while($b = $FollowingGET -> fetch_assoc()){
$ve = $b['following'];

}
  $sqlowing      = "SELECT * from follows_syds t1
                    INNER join follows_syds t2 on
                    t1.follower = t1.follower
                    where
                    t2.follower = ?
                    and
                    t2.following != ?
                    AND
                    t1.follower != ?
                    and
                    t1.following != ?
                    group by t2.id";
  $owing         = $conn -> prepare($sqlowing);
  $owing        -> bind_param('ssss',$getUser,$ve,$ve,$getUser);
  $owing        -> execute();
  $owingGET      = $owing -> get_result();
  $owingRows     = $owingGET -> num_rows;
  while($a = $owingGET -> fetch_assoc()){
      print_r($a );
      echo "</br>";
}

标签: javascriptphpajaxdatabasemysqli

解决方案


您必须创建一个名称为follower_following

CREATE TABLE `follower_following` (
  `id` int(11) NOT NULL,
  `follower_id` int(11) NOT NULL,
  `following_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `follower_following`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `follower_following`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

作为关注者的用户的 ID 必须保存follower_id在此表的列中。并且该用户的 id 必须保存following_id在此表的列中。如果您想获得 id = 1 的任何用户的关注者,则必须运行此查询。

function get_username($id){
    $sql = "SELECT * FROM user where id = $id";
    $result = $conn->query($sql);
    foreace($result as $row){
      return $row['username'];
    }
}
$sql = "SELECT * FROM follower_following where following_id = 1";
$result = $conn->query($sql);
foreace($result2 as $row2){
    echo get_username($row2['follower_id']);
}

推荐阅读