2012-05-23 12 views
8

Estoy haciendo un formulario de registro con una consulta SQL INSERT usando PDO. Después de este inserto, quiero extraer el userid (incrementación automática, clave primaria) que se acaba de crear, y INSERT que en otra tabla (una tabla de "código de confirmación")¿Cómo puedo asegurarme de que lastSsertId() de PDO no es el de otra inserción simultánea?

Pero, ¿cómo puedo estar seguro de que este ID de usuario es no la de un segundo usuario que registró 1/1000 de segundo más tarde que el primer usuario?

¿Debo encontrar alguna forma de bloquear la mesa? ¿Debería usar transacciones?

Respuesta

10

lastInsertId() devuelve el identificador de la última fila insertada en esa conexión, para que los usuarios concurrentes (con diferentes conexiones a la base de datos) no interferirá.

+0

Hola, gracias por tu respuesta. Entonces lo usaré sin preocupaciones. Saludos – alexx0186

1

Puede evitar esto haciendo un seleccionar por correo electrónico o algún campo único. Eso le garantizará obtener la id de usuario correcta.

Por ejemplo:

select id from user_table where email = '[email protected]' limit 1; 
+0

Hola, quería usar el lastInsertId() pero tendré en cuenta su sugerencia. Muchas gracias. – alexx0186

+0

Sí, no hay problema. Aprendí algo nuevo también. – Gohn67

Cuestiones relacionadas