Recuperar último id insertado en SQL Server desde php con el Driver Oficial de Microsoft

Microsoft ha publicó hace unos meses la versión RTM de su driver oficial para php que permite conectarse a sus bases de datos SQL Server.

Vamos a usar dicho driver para mostrar cómo recuperaríamos el último id insertado en una tabla.


//Especificamos el servidor
$server = "HOSTINSTANCIA";
//Especificamos los datos de acceso y la base de datos
$info = array( "Database"=>"bd","UID" => "user","PWD" => "pass");

//nos conectamos
$c = sqlsrv_connect( $server, $info);
//especificamos el código sql para la consulta parametrizada
$sql = "INSERT INTO tabla (valor) VALUES (?);";
//Scope_Identity nos devuelve el último id insertado
$sql .= "SELECT Scope_Identity() as id;";

/*
especificamos el valor o valores que se pasarán como
parámetros en la consulta anterior
**/
$param = array($valor);
//preparamos la consulta
$s = sqlsrv_prepare($c, $sql, $param);
//ejecutamos la consulta
sqlsrv_execute($s);

/**
*
En este momento se ha ejecutado la consulta pero, al contrario
de lo que podamos deducir, no se devuelve ningún valor 'id'
aunque hagamos un fetch
para obtenerlo debemos hacer un sqlsrv_next_result();
**/
sqlsrv_next_result($s);
//Ahora sí, hacemos un fetch
$r = sqlsrv_fetch_array($s, SQLSRV_FETCH_ASSOC);
//Mostramos el resultado
echo "Hemos insertado una fila con el id: ".$r['id'];

//liberamos la variable de estado
sqlsrv_free_stmt($s);
//cerramos la conexión
sqlsrv_close($c);

2 comentarios en “Recuperar último id insertado en SQL Server desde php con el Driver Oficial de Microsoft”

  1. Hola Asier, me gustaria hacerte una consulta si no es molestia para ti.

    Actualmente dispongo de una base de datos SQL server 2005 y me gustaría conectarla a Dreamweaver CS4 para crear una Web dinámica en PHP.

    Puedes ayudarme?

    Muchísimas gracias de antemano

    Jose

Deja un comentario

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