显示来自两个不同领域的数据

时间:2013-01-20 21:38:07

标签: php mysql

我正在我的网站上构建一个朋友系统,我在PHP / MYSQL方面做得非常好,但我只是对此感到困惑。我正在尝试创建某个用户的朋友列表。 MYSQL表'friend'使用两个字段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'];  

      }

2 个答案:

答案 0 :(得分:1)

如果记录是由UserUser / 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

答案 1 :(得分:0)

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

"SELECT * FROM friend WHERE RelatingUser='$users' OR RelatedUser='$users' ORDER BY id ASC"