我有一个PHP foreach循环和一个mysql insert语句。循环将数据插入到我的数据库中。我以前从未遇到过这个问题,但我认为发生的情况是,当insert到达重复记录时,insert会死掉(我在insert后没有"or die“语句)。即使表中可能有重复的记录,我也需要继续。要执行此操作,需要指定什么内容吗?
我正在将一些记录从一个表转移到另一个表。现在,我在表#1中有20条记录,在表#2中只有17条记录。我丢失了3条记录,但只有一条记录是重复的,这违反了表的约束。应该已经添加了另外两条记录。有人能给我一些建议吗?
发布于 2009-12-22 11:20:04
发生的情况是,当mysql插入失败时,PHP抛出一个警告,并在出现该警告时停止。实现目标的最好方法是:
这将允许您的脚本在不停止的情况下继续运行,同时向您解释问题。
发布于 2009-12-21 19:13:29
解决这个问题的一种方法是,简单地查询数据库,查找要插入的记录。这样,当您尝试插入重复记录时,您的一系列查询将不会终止。
一种稍微更有效的解决方案是在一个查询中查询要插入的记录的i全部/i,删除所有重复项,然后插入新记录。
发布于 2009-12-21 20:24:10
是否使用一条insert语句插入多行?
INSERT INTO xyz (x,y,z) VALUES
(1,2,3),
(2,3,5),
(3,4,5),
(4,5,6)然后,您可能需要考虑prepared statements
...or将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语句时发生的错误将被视为警告,而不是
您仍然可以获取警告,但不会中止插入。
https://stackoverflow.com/questions/1939461
复制相似问题