¿Cómo obtengo el último ID insertado de una tabla MySQL en PHP?

Resuelto gweg asked hace 54 años • 16 respuestas

Tengo una tabla en la que con frecuencia se insertan nuevos datos. Necesito obtener la última identificación de la tabla. ¿Cómo puedo hacer esto?

¿Es parecido a SELECT MAX(id) FROM table?

gweg avatar Jan 01 '70 08:01 gweg
Aceptado

Si estás usando PDO, usa PDO::lastInsertId.

Si estás usando Mysqli, usa mysqli::$insert_id.

Si todavía estás usando Mysql:

Por favor, no utilice mysql_*funciones en código nuevo . Ya no se mantienen y están oficialmente en desuso . ¿ Ves el cuadro rojo ? En su lugar, obtenga información sobre declaraciones preparadas y utilice PDO o MySQLi ; este artículo le ayudará a decidir cuál. Si eliges DOP, aquí tienes un buen tutorial .

Pero si es necesario, utilice mysql_insert_id.

deceze avatar Nov 06 '2009 06:11 deceze

hay una función para saber cuál fue la última identificación insertada en la conexión actual

mysql_query('INSERT INTO FOO(a) VALUES(\'b\')');
$id = mysql_insert_id();

Además, usar max es una mala idea porque podría generar problemas si su código se usa al mismo tiempo en dos sesiones diferentes.

Esa función se llama mysql_insert_id

RageZ avatar Nov 06 '2009 06:11 RageZ

Con DOP :

$pdo->lastInsertId();

Con Mysqli :

$mysqli->insert_id;

Por favor, no utilice mysql_*funciones en código nuevo . Ya no se mantienen y están oficialmente en desuso . ¿ Ves el cuadro rojo ? En su lugar, obtenga información sobre declaraciones preparadas y utilice PDO o MySQLi ; este artículo le ayudará a decidir cuál. Si eliges DOP, aquí tienes un buen tutorial .

Naftali avatar Dec 27 '2012 20:12 Naftali

Está bien. También puedes usar LAST_INSERT_ID()

x2. avatar Nov 06 '2009 06:11 x2.

Lo que escribió le daría lo mejor, idsuponiendo que fueran únicos y se incrementaran automáticamente, lo cual estaría bien, suponiendo que esté de acuerdo con generar problemas de concurrencia.
Dado que está utilizando MySQL como base de datos, existe una función específica LAST_INSERT_ID()que solo funciona en la conexión actual que realizó la inserción.
PHP también ofrece una función específica para eso llamada mysql_insert_id.

dlamblin avatar Nov 06 '2009 06:11 dlamblin