PHP - php insert_ip

 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 18 puestos en PHP (en relación al último mes)
Gráfica de PHP

php insert_ip

Publicado por Alberto (5 intervenciones) el 01/09/2019 22:00:03
Buenas.

En un acceso a la base de datos, inserto una nueva línea y automáticamente tomo el valor de la id que acabo de insertar para usarla más adelante. Es algo así:

1
2
$conexion->query("INSERT INTO TABLA(NOMBRE,APELLIDOS) VALUES ('Juan','Cano Soler')");
$id = $conexion->insert_id;

Las dos líneas anteriores son consecutivas en mi código y todo funciona correctamente, pero me surge la siguiente duda: ¿cabe la posibilidad de que que la variable $id no tome la id de la linea insertada con la orden anterior? Es decir, imaginemos que muchos usuarios realizan la acción de forma casi simultánea, ¿es posible que se lleve a cabo la 1ª línea de un usuario y que antes de tomar el valor de la variable $id se lleve a cabo la 1ª línea de otro usuario distinto y por tanto tomar mal el valor de la variable id?

Sé que caso de que sea posible es muy improbable, pero me gustaría saber si alguien tiene la certeza de que no puede ocurrir lo que digo anteriormente.

Importante, la base de datos InnoDB.


Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

php insert_ip

Publicado por joel (1269 intervenciones) el 02/09/2019 08:29:04
Hola Alberto, la respuesta es no!!!

No se puede dar nunca, ya que no busca el ultimo id añadido en la base de datos, busca el ultimo id añadido por tu conexión a la base de datos... recuerda que cada vez que se ejecuta una pagina web, se crea una nueva conexión.

Hacer una prueba es muy sencillo... crea una pagina web con esto:

1
2
3
4
$conexion->query("INSERT INTO TABLA(NOMBRE,APELLIDOS) VALUES ('Juan','Cano Soler')");
sleep(20);
$id = $conexion->insert_id;
echo $id;

Una vez se empiece la hayas llamado, abre otra pestaña del navegador y ejecútala nuevamente... veras que cada uno devolverá su id correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar