我有一个PHP foreach循环和一个mysql插入语句。循环将数据插入我的数据库。我之前从未遇到过这个问题,但我认为发生的事情是插入模块(插入后我没有“或死”语句)到达重复记录时。即使表中可能有重复的记录,我还需要继续。有什么我需要指定来做这件事吗?
我正在将一些记录从一个表转移到另一个表。现在,我在表#1中有20条记录,在表#2中只有17条记录。我缺少3条记录,但只有一条是重复的,这违反了桌子上的约束。应该添加另外两个记录。有人可以在这里给我一些建议吗?
答案 0 :(得分:1)
正在发生的事情是,当mysql插入失败并停止该警告时,PHP会发出警告。实现目标的最佳方法是:
这将允许您的脚本在不停止的情况下继续,同时向您解释问题。
答案 1 :(得分:0)
不是一个好方法,因为你应该弄清楚什么是错的,但是为了防止它死亡,试着在函数前添加@
@mysql_query = ...
答案 2 :(得分:0)
解决此问题的一种方法是简单地在数据库中查询您要插入的记录。这样,在尝试插入重复记录时,您的一系列查询不会消失。
稍微更有效的解决方案是查询[i]所有[/ i]您要在一个查询中插入的记录,删除所有重复项,然后插入新的。
答案 3 :(得分:0)
您是否使用一个INSERT语句插入多行?
INSERT INTO xyz (x,y,z) VALUES
(1,2,3),
(2,3,5),
(3,4,5),
(4,5,6)
然后您可能要考虑prepared statements
...或将IGNORE关键字添加到INSERT语句
INSERT IGNORE INTO xyz (x,y,z) VALUES
(1,2,3),
(2,3,5),
(3,4,5),
(4,5,6)
http://dev.mysql.com/doc/refman/5.0/en/insert.html说:
如果使用IGNORE关键字,则执行INSERT语句时发生的错误将被视为警告
您仍然可以获取警告但插入不会中止。
答案 4 :(得分:0)
插入FOO (身份证,BAR) VALUES(1,2),(3,4) 在DUPLICATE KEY UPDATE BAR = VALUES(BAR)