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

问题描述:

我有一个这样的表。如何在条件满足时选择sql表中的所有行

+----+---------+-----------+ 
| id | user_id | friend_id | 
+----+---------+-----------+ 
| 1 |  1 | 20  | 
| 2 |  4 | 20  | 
| 3 |  6 | 20  | 
+----+---------+-----------+ 

正在开发一个FRIEND_LIST系统,但现在我坚持了代码,问题是,我想呼应所有USER_ID他们friend_id等于20,但是,当我运行我的代码,将只能随声附和第一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); 
    $row_friend_list = mysqli_fetch_assoc($res_friend_list); 
     $fid = $row_friend_list['user_id']; 

     echo $fid; 
} 

所以现在的用户登录和用户ID等于T0 20则代码检查如果登录用户是等于friend_id该id为20

+0

你的选择是好的,问题是你从不确定[**这**](https://stackoverflow.com/questions/9243383/looping-所有的记录都循环通过sql-results-in-php-not-getting-entire-array)帮助 –

使用一个循环迭代通过关联数组。用这个代替最后三行代码:

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

我希望这会有所帮助。

+0

它工作正常代码帮助 –

+0

将它标记为正确的:) @CFrancis – Anonymous

尝试

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; 
    } 
}