两件事:
if ($row['username_id'] == 1)
你应该把在你的SQL:
$result = mysql_query("SELECT username, friendname FROM tbusers INNER JOIN tbfriends ON tbusers.id = tbfriends.username_id where tbusers.id = ".$yourVariable);
在您的查询,用户和朋友的联系,只能是平等的。
现在,这样的:
$count = $row['friendname'];//friendname is in friends
if ($row['id'] == $count)//id is in users
等于
if ($row['id'] == $row['friendname'])
这听起来很简单的错误。您将数字标识与名称进行比较。而且,你的sql查询已经回顾了用户的所有朋友。在我在这里展示的版本中,它仅检索您感兴趣的用户的朋友。
最后,您打印(回显)用户的名称,而不是朋友的名称。在我看来,下面的代码会做你想要什么:
$result = mysql_query("SELECT friendname FROM tbfriends WHERE username_id = ".$yourUserVariable);
while($row = mysql_fetch_array($result))
{
echo $row['friendname']; // or better: echo $row['friendname'], '<br>';
}
编辑:评论后...
所以if ($row['id'] == $row['friendname'])
意味着用户是自己的朋友。会发生吗?
这段代码应该打印出你想要的,朋友的名字。
/*
$result = mysql_query("
SELECT username as friend_name,
friendname as friend_id,
username_id as user_id
FROM tbusers INNER JOIN tbfriends ON tbusers.id = tbfriends.username_id
WHERE tbusers.id = ".$yourVariable);
*/
$result = mysql_query("
SELECT username as friend_name,
friendname as friend_id,
username_id as user_id
FROM tbusers INNER JOIN tbfriends ON tbusers.id = tbfriends.friendname
WHERE tbfriends.username_id = ".$yourVariable);
while($row = mysql_fetch_array($result))
{
echo $row['friend_name']; // or better: echo $row['friend_name'], '<br>';
}
对不起,我忘了提及FRIENDNAME也是一个ID。该人的信息在用户表中。朋友表是用来检查哪些人是朋友,所以你的解决方案工作,但我只得到了朋友的ID,这就是为什么我如果($ row ['id'] == $ row ['friendname']) – Drikus
我的头疼了^^'!为了可读性,您应该将friendname重命名为friend_id?以及。应将tbfriends.username_id重命名为user_id。 – roselan
它仍然不起作用。有些名字仍然是重复的,有些名字应该先出现不。 – Drikus