我想使用PHP和MySQL将数据插入到数据表及其关联的多对多表中。在多对多表中使用数据表的自动递增的主ID。因此,我需要知道要插入到多对多表中的数据表的ID。
我目前的想法是,最好的方法是使用循环,它首先插入到数据表中,然后使用mysql_insert_id()插入多对多表中。这是最好的方法吗?
此外,我是否需要担心使用该函数获取错误的id?许多工作者将同时使用这个数据脚本,所以我担心来自一个工作者查询的ID最终会在对另一个工作者查询的mysql_insert_id()的调用中返回。这是一个合理的担忧吗?如果是的话,我该如何处理呢?
发布于 2010-09-15 07:21:54
在具有auto_increment id的表上调用mysql_insert_id()正是正确的方法。
只要在调用mysql_query()插入行之后直接调用mysql_insert_id(),就不需要担心获得错误的id。PHP和MySQL会帮你搞定这一切的。
发布于 2010-09-15 07:22:02
如果你能把桌子锁上。
LOCK TABLE myTable FOR WRITE;
SELECT MAX(id) FROM myTable;
INSERT....
INSERT....
INSERT....
SELECT MAX(id) FROM myTable;
UNLOCK TABLES;这将阻止其他任何人使用myTable执行任何操作,但您将获得ids的最小/最大范围。
-daniel
https://stackoverflow.com/questions/3713608
复制相似问题