PHP SQL查询问题

PHP SQL查询问题,php,sql,while-loop,Php,Sql,While Loop,我有一个系统,它收集用户跟踪的所有人,并获取这些人的个人资料图像,然后将它们显示在网页上,但是如果用户跟踪3个人,查询将对找到的第一个跟踪者循环三次,然后尝试用第一个跟踪者图像显示每个跟踪者。一旦每个用户都完成了这项操作,查询将继续对第二个跟随者执行相同的操作,然后再对每个后续跟随者执行相同的操作 所以基本上网页看起来像, [用户1的正确名称和图像][用户2的正确名称和图像][用户3的正确名称和图像] [用户1的正确名称错误图像][用户2的正确名称和图像][用户3的正确名称错误图像] 依此类推,

我有一个系统,它收集用户跟踪的所有人,并获取这些人的个人资料图像,然后将它们显示在网页上,但是如果用户跟踪3个人,查询将对找到的第一个跟踪者循环三次,然后尝试用第一个跟踪者图像显示每个跟踪者。一旦每个用户都完成了这项操作,查询将继续对第二个跟随者执行相同的操作,然后再对每个后续跟随者执行相同的操作

所以基本上网页看起来像, [用户1的正确名称和图像][用户2的正确名称和图像][用户3的正确名称和图像]

[用户1的正确名称错误图像][用户2的正确名称和图像][用户3的正确名称错误图像]

依此类推,这取决于用户跟踪的人数。我觉得我可能没有很好地解释这一点,如果没有请说,我将重写

这是我正在使用的代码

$sql_friends = "SELECT `first_name`, `surname`, `username` FROM users JOIN followers ON followers.friend_id = users.user_id WHERE followers.user_id = '$user_session_id'";
            $result_friends = mysql_query($sql_friends);
            while($row = mysql_fetch_array($result_friends)){
                $friendforename = $row['first_name'];
                $friendsurname = $row['surname'];
                $friendusername = $row['username'];
                $sql_img = "SELECT `img` FROM followers JOIN user_profile ON followers.friend_id = user_profile.user_id WHERE followers.user_id = '$user_session_id'";
                $result_img = mysql_query($sql_img);
                while($img_row = mysql_fetch_assoc($result_img)){
                    $friend_image = $img_row['img'];
                    echo "<a href=\"$friendusername/\"><img src=\"../{$friendusername}/{$friend_image}\" title=\"{$friendforename} {$friendsurname}\"/></a>";
                }
            }
$sql\u friends=“从用户中选择‘first\u name’、‘name’、‘username’。friends\u id=users.user\u id,其中followers.user\u id=‘$user\u session\u id’;
$result\u friends=mysql\u查询($sql\u friends);
while($row=mysql\u fetch\u数组($result\u friends)){
$friendforename=$row['first_name'];
$FRIENDLANSAME=$row['LANSAME'];
$friendusername=$row['username'];
$sql\u img=“从关注者中选择'img',加入关注者上的用户配置文件。朋友配置文件=用户配置文件。用户配置文件,其中关注者。用户配置文件='$user\u会话配置文件';
$result\u img=mysql\u query($sql\u img);
而($img\u row=mysql\u fetch\u assoc($result\u img)){
$friend_image=$img_行['img'];
回声“;
}
}

第二次调用
mysql\u query()
会弄乱第一次调用的结果。您必须为它们指定链接标识符,或者首先将第一个查询的所有结果提取到一个数组中,然后遍历该数组来提取图像


但是,我认为您也可以执行
左连接用户配置文件
以在与原始查询相同的查询中获取图像。

您不需要两个不同的查询来实现这一点。(我假设每个用户在用户配置文件表中只能有一条记录)

请尝试以下代码:

 $sql_friends = "SELECT `first_name`, `surname`, `username`, `img` FROM users JOIN followers ON followers.friend_id = users.user_id LEFT JOIN user_profile ON followers.friend_id = user_profile.user_id WHERE followers.user_id = '$user_session_id'";
    $result_friends = mysql_query($sql_friends);
    while($row = mysql_fetch_array($result_friends)){
        $friendforename = $row['first_name'];
        $friendsurname = $row['surname'];
        $friendusername = $row['username'];
        $friend_image = $row['img'];        
        echo "<a href=\"$friendusername/\"><img src=\"../{$friendusername}/{$friend_image}\" title=\"{$friendforename} {$friendsurname}\"/></a>";
    }
$sql\u friends=“从用户中选择‘first\u name’、‘name’、‘username’、‘img’。friend\u id=users.user\u id在followers上左加入user\u profile。friend\u id=user\u profile.user\u id WHERE followers.user\u id=‘user\u session\u id’;
$result\u friends=mysql\u查询($sql\u friends);
while($row=mysql\u fetch\u数组($result\u friends)){
$friendforename=$row['first_name'];
$FRIENDLANSAME=$row['LANSAME'];
$friendusername=$row['username'];
$friend_image=$row['img'];
回声“;
}

放在一边:假设followers.user_id是一个整数字段,则不需要在变量周围加引号。你可以只做followers.user\u id=$user\u session\u id这只会带来三个朋友,但没有图片,因为查询只是告诉它从用户中选择
第一个名字
姓氏
用户名
,它还需要从用户档案中选择
img
。我如何告诉它也从这个表中选择,而不会在连接中导致错误?@Lit:忘记将img添加到原始查询中。现在更新了帖子。请检查。这就是我尝试的,但是图像仍然是空白的,查看源
img
没有被检索,然后看起来在用户配置文件表中没有朋友用户的相应记录。您能直接运行查询并查看是否得到任何结果吗?对不起,我输入了一个错误,您的解决方案非常有效!谢谢你的帮助