Como obtener el último id insertado en MySQL con PHP

Hola a todos, hoy os voy a explicar como podemos obtener el ultimo id que insertamos en una base de datos de MySQL y PHP.

Es normal que cuando insertemos algún registro en MySQL en nuestra aplicación PHP, necesitemos saber que id es el que se inserto si nuestra registro es auto increment.

Os dejo un manual donde vimos el tema de conectar PHP y MySQL:

Conectar MySQL con PHP

Para recuperar el último id con mysqli de PHP, lo podemos hacer de la siguiente forma:

— Conexion.php


<?php

	define("HOST_DB", "localhost");
	define("USER_DB", "root");
	define("PASS_DB", "");
	define("NAME_DB", "academia_idiomas");

	$conexion = new mysqli(
		constant("HOST_DB"),
		constant("USER_DB"),
		constant("PASS_DB"),
		constant("NAME_DB")
	);

?>

— index.php


<?php

    require "conexion.php";

    $sql = "INSERT INTO alumnos VALUES(null, 'alumno1', '2019-11-30', '1')";

    if(mysqli_query($conexion, $sql)){
        echo "Registro insertado, el id insertado ha sido el " . mysqli_insert_id($conexion);
    }else{
        echo "No se inserto el registro correctamente.";
    }
?>

Este es el resultado:

Para hacerlo PDO, lo podemos hacer así:

— Conexion.php


<?php

	//Opciones de la conexión
	$opciones = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8");
	
	// Lugar donde esta la BD
	define("HOST_DB", "localhost");
	// Usuario que se conecta a la BD
	define("USER_DB", "root");
	// Contraseña del usuario
	define("PASS_DB", "");
	// Nombre de la BD
	define("NAME_DB", "academia_idiomas");

	try {
		$conexion = new PDO(
			'mysql:host='.constant("HOST_DB").';dbname='.constant("NAME_DB"),
			constant("USER_DB"),
			constant("PASS_DB"),
			$opciones
		);
	} catch (PDOException $e) {
		echo "Error: " . $e->getMessage() . "\n";
		exit;
	}
?>

— index.php


<?php

    require "conexion.php";

    $sql = "INSERT INTO alumnos VALUES(null, 'alumno1', '2019-11-30', '1')";
    
    if($conexion->query($sql)){
        echo "Registro insertado, el id insertado ha sido el " . $conexion->lastInsertId();
    }else{
        echo "No se inserto el registro correctamente.";
    }
?>

Este es el resultado:

Te dejo los ejemplos para descargar aquí.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Etiquetas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *