php - 如果不存在则插入否则删除 - 使用重复键

标签 php mysql

我的数据库中有一个非常简单的表结构:

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/

相关文章:

php - 无需支付的电子购物系统

php - 字符串到 PHP 中的字节/二进制数组

php - 将作业添加到 beanstalkd

php - 滚动时对数据库的双重请求

php - mysql_query() 期望参数为 mysqli/string

MySQL 错误 150

php - 使用 POST 更改 PHP session 变量

php - CI4 您必须使用 "set"方法来更新条目。已经使用set了,还是报错

mysql - rake db:seed 失败并显示错误消息 Mysql2::Error: 你的 SQL 语法有错误

php - 简单AJAX提交并更新mysql