Recibir el último ID de una inserción con PHP y MySQL

Valoración del artículo:
Código para conseguir el último ID de inserción de una tupla.
Publicado: 29/3/04
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
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.

Comentarios
Fueron enviados 10 comentarios al artículo
8 comentarios no revisados
2 comentarios revisados:
Por: Jorge
12/6/04
En la descripción de la funcion se especifica claramente que devuelve el valor del ULTIMO ID INSERTADO.

Que sucede si al mismo tiempo se insertan dos IDS? que garantiza q el q estemos recibiendo es el q le corresponde a un usuario en particular? podría recibir el de otra conexion?
Por: Javier
03/5/06
Hola.

A la función mysql_insert_id() se le pasa como parámtero la ID de la conexión a la base de datos. Esta ID es única para cada conexión (si simultáneamente se estan ejecutando dos script que tienen realizada una conexión a MySQL, cada uno tendrá una ID única), por tanto, lo que devuelve la función mysql_insert_id() sólo es de nuestra conexión.

Espero que les sirva.

Un saludo.

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo