使用mysql_insert_id插入大量数据

时间:2010-09-14 23:16:21

标签: php mysql mysql-insert-id

我想使用PHP和MySQL将数据插入到数据表及其关联的多对多表中。数据表的自动递增主ID用于多对多表中。所以,我需要知道要插入到多对多表中的数据表的ID。

我目前的想法是,最好的方法是使用循环,首先插入数据表,然后使用mysql_insert_id()插入到多对多表中。这是最好的解决方法吗?

此外,我是否需要担心使用该功能获取错误的ID?许多工作人员会同时使用这个数据脚本,所以我担心的是一个worker查询的ID最终会在调用另一个的mysql_insert_id()时返回。这是一个有效的问题,如果是这样,我该如何处理呢?

2 个答案:

答案 0 :(得分:3)

在具有auto_increment id的表上调用mysql_insert_id()是正确的方法。

只要在致电mysql_insert_id()来插入行后直接拨打mysql_query(),就不必担心错误的ID。 PHP和MySQL会为您提供所有这些功能。

答案 1 :(得分:-3)

如果你可以锁定桌子。

LOCK TABLE myTable FOR WRITE;
SELECT MAX(id) FROM myTable;
INSERT....
INSERT....
INSERT....
SELECT MAX(id) FROM myTable;
UNLOCK TABLES;

这会阻止其他任何人使用myTable做任何事情,但是你会有你的ids的最小/最大范围。

-daniel

相关问题