我想使用PHP和MySQL将数据插入到数据表及其关联的多对多表中。数据表的自动递增主ID用于多对多表中。所以,我需要知道要插入到多对多表中的数据表的ID。
我目前的想法是,最好的方法是使用循环,首先插入数据表,然后使用mysql_insert_id()插入到多对多表中。这是最好的解决方法吗?
此外,我是否需要担心使用该功能获取错误的ID?许多工作人员会同时使用这个数据脚本,所以我担心的是一个worker查询的ID最终会在调用另一个的mysql_insert_id()时返回。这是一个有效的问题,如果是这样,我该如何处理呢?
答案 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