> Manuales > Taller de PHP

Código para conseguir el último ID de inserción de una tupla.

Creamos este artículo para responder una duda que nos han preguntado alguna vez en nuestro correo. Se trata sobre conseguir el último identificador de un registro insertado en la base de datos, programando con PHP y con la base de datos MySQL.

Realmente es una duda muy sencilla de solucionar, gracias al rico juego de funciones de PHP para trabajar con bases de datos MySQL. Existe una función que nos devuelve directamente el identificador de la última inserción, utilizando la conexión a la base de datos que se le pase por parámetro, o la última conexión utilizada en caso de que no se le indique parámetro.

mysql_insert_id($connectid)

Ejemplo de utilización

Veamos un ejemplo de la utilización de esta función, en el que se realizan las acciones necesarias para insertar un elemento en la base de datos. En este ejemplo utilizaremos una base de datos llamada "test" y la tabla "cliente".

//conecto con la base de datos 
$connectid = mysql_connect("localhost","root",""); 

//selecciono la base de datos a utilizar 
mysql_select_db("test",$connectid); 

//Sentencia de inserción del elemento 
$ssql = "INSERT INTO cliente (nombre_cliente, cif, direccion, email) VALUES ('xxx Nombre empresa', 'B3331113', 'C/ Corona 2', 'eepe@relll.com')"; 

//lo inserto en la base de datos 
if (mysql_query($ssql,$connectid)){ 

   	//recibo el último id
   	$ultimo_id = mysql_insert_id($connectid); 
   	echo $ultimo_id; 
}else{ 
   	echo "La inserción no se realizó"; 
}

Primero se conecta con MySQL y se selecciona la base de datos a utilizar. Luego se genera una sentencia SQL de inserción en una supuesta tabla de clientes. Si la ejecución de esta sentencia es correcta se recibe el último ID con la función insert_id(). Si la ejecución de la sentencia falla, muestra un mensaje de error.

Fijémonos que insert_id() recibe el identificador de la conexión, devuelto por mysql_connect() y no el identificador de resultado de la consulta, que devuelve mysql_query() cuando se ejecutan sentencias de selección en la base de datos.

Miguel Angel Alvarez

Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...

Manual