2013-01-20 56 views
0

我在我的一个网站上构建了一个朋友系统,并且我在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

不要使用mysql *功能 - 它们不是SECUR即使用PDO或mysqli * –

+0

您的意思是结果集应该由“RelatedUser”或“RelatingUser”订购吗? – Ifthikhan

+0

它应该由包含用户名称的行在ID中排序,可以是Related或Relating @Ifthikhan –

回答

0

为什么不使用查询命令呢?

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

我会回应什么,所以我可以得到这些结果? –

+0

您将检查每行的结果集并查看哪个键与您的$ users变量相同。 – shanethehat

1

如果记录通过比RelatedUser/RelatingUser, 和唯一的问题之外的其他的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 
+0

为底部查询,你能告诉我什么我会回声? –

+0

由于查询返回一个名为UserID的字段,给定您的代码,您将不得不echo' $ other_friend_assoc ['UserID']' –

+0

似乎工作欢呼! –

相关问题