我从JSON对象获取一个字符串数组。我想将这些字符串保存在数据库中,但前提是它们尚未存在。比较数据库中已有的内容与我即将输入的内容以及排除匹配项的最佳方法是什么?
我正在使用PHP和MySQL。
答案 0 :(得分:5)
由于你所描述的是想要在字符串已经存在的情况下单独留下记录,你可能想要的是IGNORE
到INSERT
的修饰符(即你INSERT IGNORE ...
)。如果找到重复的密钥,这将使您的查询不执行任何操作。当然,这需要您插入的字符串字段具有唯一键。
答案 1 :(得分:3)
REPLACE可以执行您想要的操作 - 它会插入,但如果主键已存在,则该行首先被删除。除非您需要在表中保留其他列,否则它应该可以正常工作。
答案 2 :(得分:2)
在MySql中,您可以使用带有“ignore”选项的insert语句,如果其唯一字段与现有行的字段匹配,则不会插入行。该表必须具有唯一性约束,并包含相关字段。
答案 3 :(得分:0)
很简单的例子:
你的桌子:用户 您的字段:users_id,user_name,zip_code,已创建 唯一索引:user_name
INSERT INTO用户(user_name,zip_code,已创建) VALUES ( '乔',75034, '2009-06-11') ON DUPLICATE KEY UPDATE users_id = LAST_INSERT_ID(id)
user_name具有唯一索引;所以,你不能多次添加它。当您使用上面的SQL时,它将在第一次添加时很好。第二次,它实际上不会插入。设置复制键的方式,您现在可以使用PHP从mysql中获取最后一个插入ID,并知道users_id是真正的插入还是重复。