0

我正在我的网站上建立一个朋友系统,我在 PHP/MYSQL 方面做得很好,但我只是被这个系统难住了。我正在尝试创建某个用户的朋友列表。MYSQL 表“朋友”与两个字段 RelatingUser 和 RelatedUser 一起使用,当向 RelatedUser 发送朋友请求时,它们会创建一个包含两个用户名的行。

但基本上我正在运行一个基本查询,目的是从两个字段中获取特定结果,然后按 id 显示它们。通常我会使用 mysql_fetch_assoc 然后回显变量,但是有两个不同的变量,我希望它们按照它们的 ID 顺序排列。

有任何想法吗?

      $users = mysql_real_escape_string($_GET['username']);

      $other_friend_query = mysql_query("SELECT * FROM friend WHERE RelatingUser='$users' || RelatedUser='$users'");

       while( $other_friend_assoc = mysql_fetch_assoc($other_friend_query) ) {
$friend_related = $other_friend_assoc['RelatedUser'];
$friend_relating = $other_friend_assoc['RelatingUser'];  

      }
4

2 回答 2

1

如果记录要按 RelatedUser/RelatingUser 中的 id 以外的 id 排序,并且唯一的问题是回显正确的字段,则应该这样做:

echo $friend_related == $users ? $friend_relating : $friend_related;

否则,如果您想要由 RelatedUser 或 RelatingUser 排序的记录,这取决于哪个未知,这样的查询应该可以完成这项工作:

SELECT UserID FROM 
(SELECT RelatingUser AS UserID
 FROM friend
 WHERE RelatedUser = ...
 UNION
 SELECT RelatedUser AS UserID
 FROM friend
 WHERE RelatingUser = ...) AS friends
ORDER BY UserID
于 2013-01-20T22:06:09.973 回答
0

为什么不使用查询来订购它们?

"SELECT * FROM friend WHERE RelatingUser='$users' OR RelatedUser='$users' ORDER BY id ASC"
于 2013-01-20T21:53:23.993 回答