Pregunta sobre mysql, php, pdo – ¿Cómo puedo asegurarme de que lastInsertId () de PDO no es el de otra inserción simultánea?

8

Estoy haciendo un formulario de registro con unINSERT Consulta SQL utilizando DOP. Después de esto INSERTAR, quiero extraer eluserid (incremento automático, clave principal) que se acaba de crear, yINSERT en otra tabla (una tabla de "código de confirmación")

Pero, ¿cómo puedo asegurarme de que este ID de usuario no sea el de un segundo usuario que se registró 1 / 1000th de segundo más tarde que el primer usuario?

¿Debo encontrar alguna forma de cerrar la mesa? ¿Debo usar transacciones?

Tu respuesta

2   la respuesta
1

Puede evitar esto haciendo una selección por correo electrónico o algún campo único. Eso te garantizará que obtengas la identificación de usuario correcta.

Por ejemplo:

select id from user_table where email = '[email protected]' limit 1;
Hola, quería usar lastInsertId (), pero tendré en cuenta tu sugerencia. Muchas gracias. alexx0186
Si no hay problema. También aprendí algo nuevo. Gohn67
10

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

Hola, gracias por tu respuesta. Entonces usaré eso sin preocuparme. Saludos alexx0186

Preguntas relacionadas