Cómo obtener el último registro en MySQL con PHP

¿Cómo saber cuál es el último registro en tu base de datos?

Es una pregunta muy común cuando estás trabajando con bases de datos. A veces, la gente piensa que obtener el «último registro» es lo mismo que buscar el ID más alto, pero no siempre es así. En este artículo, vamos a desglosar exactamente cómo puedes hacer esto en MySQL y luego llevar esos resultados a PHP.

Diagrama técnico que muestra la conexión entre una base de datos MySQL y funciones de PHP, ilustrando cómo los resultados de las consultas SQL se convierten en variables finales.
Mapa visual del flujo de datos entre MySQL y PHP para obtener el último registro.

Las estrategias SQL para encontrar el último registro

Antes de tocar cualquier código, hay que entender qué estás buscando realmente. Si quieres saber cuál es la fila más reciente insertada o simplemente cuál es el ID más alto en tu tabla, tienes varias opciones muy poderosas.

Usando MAX(id)

Si tienes una columna autoincremental que llamas id, la forma más rápida de obtener el valor máximo existente es usando la función agregada MAX(). Es un método muy directo y eficiente.

SELECT MAX(id) AS ultimo_id
FROM mi_tabla;

Este comando te devolverá el número más alto que existe actualmente en esa columna. Ideal si quieres saber cuántos registros hay en total o cuál es la numeración actual de tu base de datos.

Usando ORDER BY y LIMIT 1

A veces, simplemente buscar el valor máximo no es suficiente. Si quieres asegurarte de obtener la fila completa más reciente, necesitas ordenar los resultados. La mejor manera de hacer esto es usar ORDER BY id DESC LIMIT 1;. Esto le dice a MySQL que ordene todas las filas desde el ID más alto hacia abajo y solo devuelva una.

SELECT *
FROM mi_tabla
ORDER BY id DESC
LIMIT 1;

Esto es muy útil si necesitas los datos completos de la última fila insertada, no solo el número del ID.

Usando LAST_INSERT_ID()

Hay un caso especial que debes conocer: si acabas de realizar una inserción y quieres saber inmediatamente qué ID se le asignó a ese nuevo registro. Para eso, MySQL tiene una función reservada llamada LAST_INSERT_ID(). Es extremadamente útil para mantener el control sobre tus transacciones.

INSERT INTO mi_tabla (nombre) VALUES ('Juan');
SELECT LAST_INSERT_ID();

Implementando las consultas en PHP

Ahora que sabemos qué hacer en la base de datos, vamos a ver cómo traer esos datos a nuestra aplicación. Podemos usar tanto mysqli como PDO, y ambos funcionan muy bien.

Ejemplo con mysqli

Si prefieres el estilo procedural o la extensión estándar de PHP, aquí tienes cómo estructurar una conexión para obtener el último ID:

query($sql);
$row = $result->fetch_assoc();
echo $row['ultimo_id'];
?>

Es un código muy limpio y directo.

Ejemplo con PDO

Por otro lado, si estás usando PDO, la sintaxis es ligeramente diferente pero igual de potente. Puedes preparar una consulta para obtener el mismo resultado:

query("SELECT MAX(id) as ultimo_id FROM mi_tabla");
$ultimo_id = $stmt->fetch(PDO::FETCH_ASSOC)['ultimo_id'];
echo $ultimo_id;
?>

Conclusión

Ya tienes todas las herramientas para obtener el último registro en MySQL y PHP. Recuerda que si estás usando un framework como Laravel, o si necesitas manejar bases de datos más antiguas con funciones legadas tipo mysql_*, la lógica sigue siendo muy similar.