插入mySQL插入重复项? - 复制双打条目

时间:2014-07-30 22:33:54

标签: php mysql insert duplicates

我正在将搜索词插入数据库,当我运行它进行测试时,我看到重复数据插入到数据库中?知道为什么会这样吗?这是我的插入函数的示例 -

*更新 - 我正在插入,它不再作为重复插入,但我试图让重复工作 - 并且重复更新每次2的流行度?我在这里有什么不对?

$entryDate = date("c");
$insertsearchquery="insert into article_searches (termSafe,entryDate) values (\"$termSafe\",\"$entryDate\") on duplicate key update popularity=popularity+1";

mysql_query($insertsearchquery);

3 个答案:

答案 0 :(得分:1)

为避免重复,您需要unique索引或约束(这些是真的相同)或主键。假设您的意思是重复项都是由两个值引起的,您可以通过创建唯一索引来阻止插入:

create unique index idx_table2_termSafe_entryDate on table2(termSafe, entryDate);

我会评论表名是代码中的参数似乎很奇怪。通常,具有相同结构的多个表是数据库设计不佳的标志。在大多数情况下,最好有一个大表而不是许多小表。

答案 1 :(得分:1)

我知道您提出了另一个问题,但是由于您正在编写搜索系统,请考虑添加一个列计算您插入该密钥的时间的列:

popularity (smallint unsigned not null default 1)

并添加

on duplicate key update popularity=popularity+1

在插入查询的末尾(这需要列termSafe和entryDate上的主键)

答案 2 :(得分:0)

除非您在要插入的表中设置了主键,否则将无法阻止插入重复数据。

请参阅:http://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html