我正在我的网站上构建一个朋友系统,我在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'];
}
答案 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"