MySQL查询问题?

时间:2010-06-27 13:28:22

标签: mysql

我试图阻止成员将自己添加为朋友,但我似乎无法让它在我的MySQL查询中使用最后一行代码AND '$user_id' <> '$friend_id' 正在尝试检查用户ID是否与朋友ID相同,如果是,则停止运行查询但由于某种原因代码仍将运行。

如何修复此问题,以便在用户尝试将自己添加为好友时查询停止运行?

这是MySQL查询。

 SELECT *
 FROM friends
 WHERE user_id = '$user_id'
 AND friend_id = '$friend_id'
 AND '$user_id' <> '$friend_id'

这是MySQL表。

CREATE TABLE friends (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL,
friend_id INT UNSIGNED NOT NULL,
PRIMARY KEY (id),
);

4 个答案:

答案 0 :(得分:1)

为什么你不能像这样简单地做到这一点..

您将有一种提交userID和friendID的课程形式。 例如,表单提交的值是..

$user_id;
$friend_id;

然后,为什么不能比较

if($user_id == $friend_id) {
   //user has selected himself as friend
}
else {
   // different user has been selected as friend
}

如果我是对的,也可以通过不显示自己的ID来选择作为朋友来限制表格。

有任何意见吗?

答案 1 :(得分:0)

 "SELECT *
 FROM friends
 WHERE user_id =" . '$user_id' .
 " AND friend_id = " . '$friend_id' . 
 " AND user_id <> friend_id";

应该工作(假设您使用的是PHP)。

答案 2 :(得分:0)

您希望使用选择查询存档什么内容?

此刻,您似乎想要显示用户的所有朋友。 如果是这种情况,应该阻止用户尽快将自己添加为朋友。 在进行插入声明时,请检查它是否是合法的朋友。

这样,您的数据库中就没有坏数据,并且您节省了数据库资源,因为每次显示好友时都不需要检查数据库。

答案 3 :(得分:0)

SELECT查询不是您需要工作以阻止用户将其添加为朋友的地方。您应该在代码中的某处有一个INSERT语句,并且它必须在其上工作。您可以简单地测试$ user_id == $ friend_id,如果为true,则不发出INSERT语句。

您还需要使用以下方式“清理”现有的朋友表:

DELETE FROM friends WHERE user_id = friend_id;