Php SQL布尔关系

Php SQL布尔关系,php,mysql,sql,Php,Mysql,Sql,我有一个表dislikes,其中包含两列,idone和idtwo 这些是来自用户的唯一ID,例如: | idone | idtwo | ----------------- | 5 | 4 | 这意味着id=5的用户不喜欢id=4的用户。我在PHP中使用的是一个数组,其中包含当前用户选择为不喜欢的所有用户的ID 所以说dislikes={1,2,3},这意味着当前用户不喜欢用户1,2或3。数据库中有未知数量的用户 因此,如果用户1选择不喜欢用户2和用户3(这是通过HTML下拉菜单

我有一个表
dislikes
,其中包含两列,
idone
idtwo

这些是来自用户的唯一ID,例如:

| idone | idtwo |
-----------------
|   5   |   4   |
这意味着id=5的用户不喜欢id=4的用户。我在PHP中使用的是一个数组,其中包含当前用户选择为不喜欢的所有用户的ID

所以说
dislikes={1,2,3}
,这意味着当前用户不喜欢用户1,2或3。数据库中有未知数量的用户

因此,如果用户1选择不喜欢用户2和用户3(这是通过HTML下拉菜单完成的),我会将
不喜欢={2,3}
传递给处理此数据的PHP页面

我希望PHP页面随后添加条目
(1,2)
(1,3)
。这里是第一个问题,如何确保只添加唯一的条目


也就是说用户1改变了他不喜欢用户2的事实。然后,我将
厌恶={3}
传递到php页面,并且必须以某种方式删除所有条目
(1,!3)
,即用户1不喜欢除用户3以外的任何人的所有条目。我怎样才能做到这一点?或者有更好的方法吗?

因为您使用的是MySQL,最简单的方法可能是使用主键或唯一索引(idone、IDTOW)来代替
INSERT

或者,在更新时,您可以运行执行以下任一操作的事务:

  • 删除此用户的现有行、添加所有行、提交
  • 选择现有行,从本地集中删除要复制的行,仅添加新行,提交

显示您的代码。。。你试了什么?听起来没那么难…我们在谈论多少用户?您是否可以始终将完整的不喜欢列表传递到php页面,然后该页面可以删除该用户的所有当前记录,然后添加新记录?您有几个选项。。。1.删除所有内容(取决于用户),重新写入当前有效。2.使用(如已建议的)
替换为
。3. <代码>插入到。。。在重复密钥更新时。。。也许我错过了更多的选择……我知道,我从来都不知道如何将
替换为
,但同时我还需要删除所有不再不受欢迎的条目。那么,最好的方法不是做你答案的第一个选项吗?@Dan:是的,如果你还需要删除行,那么在我看来,最简单的方法就是删除所有行,然后添加回你知道的行。确保使用事务。请原谅我的天真,什么是事务?@Dan:它保证您的多个查询序列作为一个事件执行,否则查询不会改变您的数据库: