我的数据库中有一个非常简单的表结构:
ID (Unique), userid, groupid
在用户 ID 和组 ID 上有一个唯一的键 - 所以你不能有两个相同的键。例如:
ID userid groupid
1 86 5
2 86 6
这是可能的,但是:
ID userid groupid
1 86 5
2 86 5
不可能。
这一切都运行良好。我想做的是尝试插入该行,如果由于重复而失败,则删除该行。我的代码很简单:
$group_query = $database->prepare("INSERT INTO users_groups (userid,groupid) VALUES (?,?) ON DUPLICATE KEY DELETE FROM users_groups WHERE userid=? AND groupid=?");
$group_query->bind_param("iiii", $user_id, $group_id, $user_id, $group_id);
我不明白为什么这不起作用。所有变量都设置为整数。它们都是实际数字(已检查)。语法看起来一切都很好。我唯一的结论是它不是一个有效的查询 - 但我不确定为什么它不是一个有效的查询。
谢谢你的一切!
最佳答案
您可以首先使用 select 语句根据 userid 和 groupid 选择行:
SELECT *FROM table where userid = '86' AND groupid = '5'
如果存在则返回该行,然后检查数组是否大于0
if($result_array > 0){
// use delete statement
}else{
// user insert statement
}
关于php - 如果不存在则插入否则删除 - 使用重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38842153/