我试图阻止成员将自己添加为朋友,但我似乎无法让它在我的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),
);
答案 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;