如何确保PDO的lastInsertId()不是另一个同时插入的?

时间:2012-05-23 00:34:22

标签: php mysql pdo

我正在使用PDO进行INSERT SQL查询的注册表单。在此INSERT之后,我想提取刚创建的userid(自动递增,主键),并将INSERT提取到另一个表(“确认代码”表)

但是,如何确保此用户标识不是第二个用户的用户标识,后者是第一个用户的1/1000秒注册?

我应该找到锁定桌子的方法吗?我应该使用交易吗?

2 个答案:

答案 0 :(得分:10)

lastInsertId()返回在该连接上插入的最后一行的标识符,因此并发用户(与数据库的连接不同)不会干扰。

答案 1 :(得分:1)

您可以通过电子邮件或某个唯一字段进行选择来避免这种情况。这样可以保证您获得正确的用户ID。

例如:

select id from user_table where email = 'user@email.com' limit 1;