Foros del Web » Programando para Internet » PHP »

recuperar el último ID insertado

Estas en el tema de recuperar el último ID insertado en el foro de PHP en Foros del Web. estoy haciendo pruebas con la clase mysqli, estilo orientado a objetos, además utilizo procedimientos almacenados, aquí les muestro un ejemplo muy sencillo. tbl_regions Cita: CREATE ...
  #1 (permalink)  
Antiguo 12/12/2008, 20:12
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 12 años, 1 mes
Puntos: 18
recuperar el último ID insertado

estoy haciendo pruebas con la clase mysqli, estilo orientado a objetos, además utilizo procedimientos almacenados, aquí les muestro un ejemplo muy sencillo.
tbl_regions
Cita:
CREATE TABLE `tbl_regions` (
`regi_id` int(3) NOT NULL AUTO_INCREMENT,
`regi_name` varchar(40) NOT NULL,
PRIMARY KEY (`regi_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
sp_regions_insert
Cita:
Delimiter //
CREATE PROCEDURE `sp_regions_insert`(IN name VARCHAR(40))
BEGIN
INSERT INTO tbl_regions (regi_name) VALUES(name);
END
//;
Luego para utilizar este procedimiento almacenado desde php hago lo siguiente
insertar_region.php
Cita:
<?php
$mysqli= new mysqli("localhost","root","","pruebas");
if (mysqli_connect_errno())
{
echo "No se pudo Conectar con la Base de Datos";
exit();
}
$saber_si_inserto=$mysqli->query('CALL sp_regions_insert("region a insertar")');
if(!empty($saber_si_inserto))
{
echo "fue correcto";
echo “el ultimo id insertado es”. $mysqli->insert_id;
echo “registros afectados”. $mysqli->affected_rows;
}
else
{
echo "ERROR: no se pudo insertar";
}
$mysqli->close();
?>
Bueno mi pregunta si hay alguna otra forma de poder obtener el último id(por cierto es auto increment y PK) insertado, ya que la propiedad insert_id de la clase mysqli no funciona(siempre me devuelven 0 pero si inserta en mi tabla) cuando utilizo procedimientos almacenados.
  #2 (permalink)  
Antiguo 12/12/2008, 20:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: recuperar el último ID insertado

El problema es tu procedimiento almacenado, pero para recuperarlo puedes hacer un select:
Código sql:
Ver original
  1. SELECT LAST_INSERT_ID()

Para que te devuelva el último ID.

Saludos
  #3 (permalink)  
Antiguo 12/12/2008, 20:21
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 12 años, 1 mes
Puntos: 18
Respuesta: recuperar el último ID insertado

bueno gracias lo probaré, pero dime como sería entonces mi SP para no hacerlo como me lo indicas del select last_insert_id().
  #4 (permalink)  
Antiguo 12/12/2008, 21:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: recuperar el último ID insertado

Pues tu SP tendría que tener un parámetro OUT que es el ID, y ese ID seleccionarlo después del INSERT, por ejemplo:
Código sql:
Ver original
  1. Delimiter //
  2. CREATE PROCEDURE `sp_regions_insert`(IN name VARCHAR(40), OUT id INTEGER)
  3. BEGIN
  4. INSERT INTO tbl_regions (regi_name) VALUES(name);
  5. SELECT LAST_INSERT_ID() INTO id;
  6. END
  7. //;

Saludos
  #5 (permalink)  
Antiguo 12/12/2008, 21:24
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 12 años, 1 mes
Puntos: 18
Respuesta: recuperar el último ID insertado

gracias por tu ayuda Gatorv
  #6 (permalink)  
Antiguo 14/12/2008, 13:34
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 12 años, 1 mes
Puntos: 18
Respuesta: recuperar el último ID insertado

GatorV una pregunta, que variable es lo que debo pasarle como segundo parámetro a mis SP, en ese caso desde mi código php.
  #7 (permalink)  
Antiguo 14/12/2008, 14:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: recuperar el último ID insertado

Ve en el manual tienes que hacer un bind() de la variable para que se almacene ahi el resultado.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:23.