Php 满足条件时如何选择sql表中的所有行

Php 满足条件时如何选择sql表中的所有行,php,sql,Php,Sql,我有一张这样的桌子 +----+---------+-----------+ | id | user_id | friend_id | +----+---------+-----------+ | 1 | 1 | 20 | | 2 | 4 | 20 | | 3 | 6 | 20 | +----+---------+-----------+ 我正在开发一个friend_list系统,但是现在我被代码卡住了,问

我有一张这样的桌子

+----+---------+-----------+
| id | user_id | friend_id | 
+----+---------+-----------+
|  1 |     1   |    20     |
|  2 |     4   |    20     |
|  3 |     6   |    20     | 
+----+---------+-----------+
我正在开发一个friend_list系统,但是现在我被代码卡住了,问题是我想回显所有的用户id,他们的friend_id等于20,但是当我运行代码时,它只回显第一个用户id,如果我的代码出了问题,应该有人帮我解决

 if(isset($_SESSION['em'])){
     $eml = $_SESSION['em'];

     $sql = "select id from users where email='$eml'";
     $res = mysqli_query($conn,$sql);
     $row = mysqli_fetch_assoc($res);

     $id = $row['id'];

     $sql_friend_list = "select user_id from friend where friend_id='$id'";
     $res_friend_list = mysqli_query($conn,$sql_friend_list);
     $row_friend_list = mysqli_fetch_assoc($res_friend_list);
      $fid = $row_friend_list['user_id'];

      echo $fid;
}

因此,现在用户已登录,并且用户id等于t0 20,那么代码将检查登录用户的id是否等于friend_id,即20。

使用循环在关联数组中进行迭代。用以下代码替换最后三行代码:

while($row = mysqli_fetch_assoc($res_friend_list)){
      echo $row['user_id'];
}

我希望这会有所帮助。

使用循环遍历关联数组。用以下代码替换最后三行代码:

while($row = mysqli_fetch_assoc($res_friend_list)){
      echo $row['user_id'];
}
我希望这会有所帮助。

试试看

if(isset($_SESSION['em'])){
    $eml = $_SESSION['em'];

    $sql = "select id from users where email='$eml'";
    $res = mysqli_query($conn,$sql);
    $row = mysqli_fetch_assoc($res);

    $id = $row['id'];

    $sql_friend_list = "select user_id from friend where friend_id='$id'";
    $res_friend_list = mysqli_query($conn,$sql_friend_list);
    while($row = mysqli_fetch_assoc($res_friend_list){
        $fid = $row['user_id'];
        echo $fid;
    }
}
试一试


您的选择是正确的,问题是您必须从所有记录循环可能有帮助您的选择是正确的,问题是您必须从所有记录循环可能有帮助