我有一个系统,它正在收集所有的人一个用户正在跟随,也得到这些人的个人资料图像,然后在网页上显示它们,但是,如果一个用户是跟随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>";
}
}
第二次调用mysql_query()
将混淆第一次调用的结果。您必须为它们指定链接标识符,或者首先将第一个查询的所有结果获取到一个数组中,然后遍历该数组以获取图像。
然而,我认为你也可以做一个LEFT JOIN user_profile
来获得图像在相同的查询作为原始的。
您不需要两个不同的查询来实现这一点。(我假设在user_profile表中每个用户只能有一条记录)
试试下面的代码:
$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>";
}