【发布时间】:2012-02-15 23:19:34
【问题描述】:
这绝对让我感到困惑。我以前做过很多次这样的查询,但这一次似乎有问题。我什至完全删除了表格并重新添加了它,所以我不确定问题是什么。
基本上我有一个名为friends的表,其中一个用户(sender_id)可以向另一个用户(receiver_id)发送好友请求,状态最初设置为零,然后当接收者接受好友请求时,状态更新为1 .
在好友页面上,它列出了所有已登录用户的好友以及好友的头像、用户名等。然而,值“friend_id”是在拉取 ROW NUMBER(列 ID)而不是“其他用户 ID” (sender_id 或receiver_id 取决于谁发送了请求......无论是不是登录用户)。
Friends 表设置:id (INT 15, unique, primary), sender_id (INT 15), receiver_id (INT 15), created (datetime), status = (INT 1)
$getfriends = mysql_query("SELECT * FROM friends WHERE sender_id = '$user_id' OR receiver_id = '$user_id' ORDER BY status ASC, id DESC LIMIT $offset, $user_friends_limit", $conn);
然后是一些代码来设置表格
while ($rowfriends = mysql_fetch_assoc($getfriends)) {
$relationship_id = $rowfriends['id']; // this doesn't actually need to be called since I don't need to use this number
$sender_id = $rowfriends['sender_id'];
$receiver_id = $rowfriends['receiver_id'];
$friend_status = $rowfriends['status'];
$friend_date = $rowfriends['created'];
// THE IMPORTANT PART THAT ASSIGNS THE FRIEND ID
if($sender_id == "$user_id"){
$friend_id = "$receiver_id";
}
else {
$friend_id = "$sender_id";
}
if($friend_status == 0){
$since = "Request Sent";
}
elseif($friend_status == 1){
$since = "Friend Since";
}
// FUNCTIONS --- ALL OF THE FUNCTIONS ARE RETURNING WITH THE WRONG INFO
User($friend_id);
Avatar($friend_id);
ProfileURL($friend_id);
UserFavorites($friend_id);
UserPoints($friend_id);
UserPosts($friend_id);
DateConvert($friend_date);
然后是一些代码来显示结果
似乎当朋友 ID = 1 时,当 ID 为 1 的用户发送或接收朋友请求时,朋友 ID 正在拉 ROW 编号或关系 ID,否则它看起来像它的工作。我只是不确定为什么会这样。
例如,如果我替换 $sender_id = $rowfriends['sender_id'];到 $sender_id = RAND(2, 2000);它使用生成的任何随机 id 为用户显示正确的头像、用户名等。用户为 1 时不起作用。
回答
我在下面发布了答案,但我还不能接受。
【问题讨论】:
-
为什么这个问题被标记为mysql错误?
-
因为一些奇怪的原因它没有正确计算。我仍然不知道它为什么要这样做,但我决定重命名我的变量并且它起作用了
-
所以,您只是添加了一个随机错误编号,您不知道它的用途是什么?这是你所有问题的根源。
-
什么?我不知道你的意思。我的查询调用我的数据的方式出现错误。尽管我的代码编写正确,但它调用了错误的信息。变量有问题,我更改了变量名,一切正常。你甚至读过我的问题吗?我将标签作为 mysql 错误,因为我使用的是 mysql 并且有一个错误
-
是的,我做到了。甚至您添加的“答案”。很明显,mysql与这个“错误”无关。如果确实是“不正确的数据”,您将无法执行
$friend = "$sender_id";。去图吧。