gpt4 book ai didi

php - lastInsertId 可能的问题

转载 作者:太空宇宙 更新时间:2023-11-03 11:55:09 27 4
gpt4 key购买 nike

作为类(class)项目,我正在使用 PHP/MySQL 开发一个小型网络应用程序。

当用户创建一个账户(账户类型必须是导师或学生)时,我按照以下逻辑将他插入到数据库中:
注意:我通过将 USER 设置为父类(super class)来实现表之间的继承,STUDENT 和 TUTOR 都具有到 user_id 的 FK

插入用户;//A 行

// The following are Lines B
if (type == 'TUTOR')
INSERT INTO TUTOR (user_id) VALUES (lastInsertId());
else INSERT INTO STUDENT (user_id) VALUES (lastInsertId());

在可能有 100 个客户端同时注册的大型应用程序中,此逻辑是否可能无法正确执行其任务?

例如,User-1 (Student) 正在注册,现在首先插入 USER id=1
在他被插入到 STUDENT 之前,另一个用户 User-2(导师)来了并且也在注册该应用程序,他被插入到 USER with id=2

现在,继续执行 User-1 并且 lastInsertId() 现在是 2 而不是 1...

这会发生在大型网络应用程序中,还是假设 A 行和 B 行之间有一大段代码?

请注意,我没有使用单例模式连接到数据库。

最佳答案

最后一个插入 ID 特定于数据库连接保证返回当前连接发出的最后一条语句的插入 ID。它与其他并发查询明确隔离。

关于php - lastInsertId 可能的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33437619/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com