你能相信mysql_insert_id吗?

时间:2013-12-16 18:24:27

标签: php mysql indexing

我有一个注册页面,然后将数据插入MySQL的两个表中。第一个是技术信息,如用户名/密码/电子邮件,另一个是个人信息,如姓名/地址等。

我的技术信息表有一个主键自动增量ID,然后,一旦我在这个表中创建了一行,我立即在通用信息表中创建了具有相同id的另一行。

要获取该ID,我在第一次插入查询后立即使用mysql_insert_id()函数。

我的问题相当笼统:你真的相信这个函数它必然会返回相应的索引吗?如果我的网站有很多用户每秒注册一次,它仍然可靠,并始终返回ID?或者它只是返回生成的表的最后一个主键?

1 个答案:

答案 0 :(得分:2)

是的,你可以。

该函数是每个会话,但它仅对最后一个查询有效。

也就是说,你永远不会有一个用户“污染”另一个用户的last_insert_id,但你无法从两个插入前恢复insert_id。当您需要连续执行多个插入并且之后不需要ID时,请将它们设置为变量:

INSERT INTO ...
SET @foo_id = LAST_INSERT_ID();
INSERT INTO ...
SET @bar_id = LAST_INSERT_ID();
INSERT INTO some_join_table VALUES (@foo_id, @bar_id);