Php 最后插入的可能问题

Php 最后插入的可能问题,php,mysql,Php,Mysql,我正在用PHP/MySQL开发一个小型web应用程序,作为一个课程项目 当用户创建帐户时(帐户类型必须是导师或学生),我按照以下逻辑将其插入数据库: 注意:我通过将用户设置为超级类实现了表之间的继承,STUDENT和TUTOR都有FKs到USER_id 插入到用户中;//A行 // The following are Lines B if (type == 'TUTOR') INSERT INTO TUTOR (user_id) VALUES (lastInsertId()); els

我正在用PHP/MySQL开发一个小型web应用程序,作为一个课程项目

当用户创建帐户时(帐户类型必须是导师或学生),我按照以下逻辑将其插入数据库:
注意:我通过将用户设置为超级类实现了表之间的继承,STUDENT和TUTOR都有FKs到USER_id

插入到用户中;//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(学生)正在注册,现在以id=1插入到
User
中 在他被插入到
STUDENT
之前,另一个用户user-2(导师)也来了,并且正在注册应用程序,他被插入到
user
,id=2

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

这会发生在大型web应用程序中吗?或者假设在a行和B行之间有一大块代码


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

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

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

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

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

您的代码是完全安全的。MySQL函数为不同连接返回的值之间没有混合。如文件所述:

生成的ID在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机的
AUTO\u INCREMENT
列的最新语句生成的第一个
AUTO\u INCREMENT
值。此值不受其他客户端的影响,即使它们生成自己的
AUTO_INCREMENT
值。此行为确保每个客户端都可以检索自己的ID,而不必关心其他客户端的活动,也不需要锁或事务


我猜您发布的伪代码是指PHP函数,它为MySQL包装了MySQL函数。

您的代码是完全安全的。MySQL函数为不同连接返回的值之间没有混合。如文件所述:

生成的ID在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机的
AUTO\u INCREMENT
列的最新语句生成的第一个
AUTO\u INCREMENT
值。此值不受其他客户端的影响,即使它们生成自己的
AUTO_INCREMENT
值。此行为确保每个客户端都可以检索自己的ID,而不必关心其他客户端的活动,也不需要锁或事务


我猜您发布的伪代码是指PHP函数,它为MySQL包装了MySQL函数。

您的代码是完全安全的。MySQL函数为不同连接返回的值之间没有混合。如文件所述:

生成的ID在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机的
AUTO\u INCREMENT
列的最新语句生成的第一个
AUTO\u INCREMENT
值。此值不受其他客户端的影响,即使它们生成自己的
AUTO_INCREMENT
值。此行为确保每个客户端都可以检索自己的ID,而不必关心其他客户端的活动,也不需要锁或事务


我猜您发布的伪代码是指PHP函数,它为MySQL包装了MySQL函数。

您的代码是完全安全的。MySQL函数为不同连接返回的值之间没有混合。如文件所述:

生成的ID在服务器中按每个连接进行维护。这意味着函数返回给给定客户机的值是为影响该客户机的
AUTO\u INCREMENT
列的最新语句生成的第一个
AUTO\u INCREMENT
值。此值不受其他客户端的影响,即使它们生成自己的
AUTO_INCREMENT
值。此行为确保每个客户端都可以检索自己的ID,而不必关心其他客户端的活动,也不需要锁或事务


我猜您发布的伪代码指的是PHP函数,用于MySQL的PHP函数包装了MySQL函数。

是的,您对该函数的看法是正确的。谢谢你的回答是的,关于函数你是对的。谢谢你的回答是的,关于函数你是对的。谢谢你的回答是的,关于函数你是对的。谢谢你的回答