Php 显示好友列表失败的代码段?

Php 显示好友列表失败的代码段?,php,Php,我有一些代码片段,可以检查fans表,并获得所有为您扇风的人。然后,它会检查您是否也为他们扇风,如果是,它会显示他们的用户名和个人资料图片 它会检查你是否用$count扇动它们,我想这就是它绊倒的地方。但是firebug没有显示任何错误 <?php $friendlist = mysql_query("SELECT * FROM fans WHERE username='$user'") or die(mysql_error()); while($row = mysql_f

我有一些代码片段,可以检查fans表,并获得所有为您扇风的人。然后,它会检查您是否也为他们扇风,如果是,它会显示他们的用户名和个人资料图片

它会检查你是否用$count扇动它们,我想这就是它绊倒的地方。但是firebug没有显示任何错误

<?php $friendlist = mysql_query("SELECT * FROM fans WHERE username='$user'") or die(mysql_error());
        while($row = mysql_fetch_array($result1)) {
            $friendname = $row['fanned'];
            $friendlist2 = mysql_query("SELECT * FROM fans WHERE username='$friendname' AND fanned='$user'") or die(mysql_error());
            $count = mysql_num_rows($friendlist2);
            if($count == 1 ){
                $avatar = mysql_query("SELECT * FROM users WHERE username='$friendname'") or die(mysql_error());
                while($row3 = mysql_fetch_assoc($avatar)) {
                $filename = $row3['avatar'];
                if($filename != "") { 
                            $friendpic = '<img id="headeravapic" src="profileavatars/' . $friendname . "/" . $filename . '" />';
                        }
                        else {
                            $friendpic = '<img id="headeravapic" src="images/nopic.PNG" />';
                        }
        echo '<div align="center" id="onlinepic">' . $friendpic . '<p />' . $friendname . '</div>'; 
                }
            }
        }?>

您可以将其简化为一个查询。比如:

SELECT f.*, u.avatar, f2.username as YouFanThem
   FROM fans f
       LEFT JOIN fans f2 ON f.fanned=f2.username and f2.fanned='$user'
       LEFT JOIN users u ON f.fanned=u.username
   WHERE f.username='$user'
while($row = mysql_fetch_array($result1)) { 
    $FriendName = $row['fanned'];
    $Avatar = $row['avatar'];
    $MutualFriend = (empty($row['YouFanThem']) ? false : true);
}
如果你只想限制那些你是共同粉丝的人,那么将“左加入”改为“内部加入”——那么你也不需要在返回结果中使用“YouFanthes”

我还鼓励您不要使用“选择*”,因为它很重,只选择您需要的字段


最后,必须注意的是mysql_函数正在贬值,所以请检查PDO。

基本上是的。看看我用的“FriendName”和你用的“FriendName”会有所不同。但是从那开始,你应该能够调试。用户print_r($row)也可以查看每行的输出以进行调试(以防SQL确实需要一个小的调整来适应您的表),它在修复这些小的键入错误后工作。非常感谢。现在我将开始更多地使用连接。非常方便,不客气。是的,加入可以为你节省很多。提醒-不要忘记在进行连接的表中“索引”以防止查询速度变慢。在您习惯(即将贬值的)mysql函数之前,请立即查看PDO函数:)。祝你好运。另一个简短的问题是,我该如何改变这一点,使之只得到球迷(而不是球迷)?谢谢。事实已经是这样了——如果共同的朋友是软弱的,那么他们就不是相互的。您可以通过删除查询中对“f2”的任何引用来进行优化。选择f.*,u.avatar FROM fans f LEFT JOIN users u ON f.fanned=u.username,其中f.username='$user'