2

我从 JSON 对象中获取字符串数组。我想将这些字符串保存在数据库中,但前提是它们不存在。将数据库中已有的内容与我将要输入的内容进行比较并排除匹配项的最佳方法是什么?

我正在使用 PHP 和 MySQL。

4

4 回答 4

6

由于您所描述的是希望在字符串已经存在的情况下单独留下记录,因此您可能想要的是IGNORE修饰符INSERT(即您做INSERT IGNORE ...)。如果找到重复键,这将使您的查询不执行任何操作。当然,这要求您插入的字符串字段具有唯一的键。

于 2009-06-11T18:05:47.887 回答
4

REPLACE 可能会做你想做的事 - 它会插入,但如果主键已经存在,那么该行将首先被删除。除非您需要保留表中的其他列,否则它应该可以工作。

http://dev.mysql.com/doc/refman/5.0/en/replace.html

于 2009-06-11T18:03:39.950 回答
3

在 MySql 中,您可以使用带有“ignore”选项的插入语句,如果其唯一字段与现有行的唯一字段匹配,则不会插入行。该表必须具有包含相关字段的唯一性约束。

于 2009-06-11T18:05:54.110 回答
0

非常简单的例子:

您的表:用户您的字段:users_id、user_name、zip_code、创建的唯一索引:user_name

插入用户(用户名、邮政编码、创建)值('joe'、75034、'2009-06-11')在重复键更新 users_id=LAST_INSERT_ID(id)

user_name 具有唯一索引;因此,您不能多次添加它。当您使用上面的 SQL 时,它会在第一次添加时很好。第二次,它实际上不会插入。设置重复键的方式,您现在可以使用 PHP 从 mysql 获取最后一个插入 id,并知道 users_id 是真正的插入还是重复。

于 2009-06-12T04:10:30.227 回答