Foros del Web » Programando para Internet » PHP »

lastInsertId es efectivo PDO

Estas en el tema de lastInsertId es efectivo PDO en el foro de PHP en Foros del Web. buenas quisiera saber si lastInsertId de PDO es efectivo para retornar el ultimo id de una tabla... Tengo una duda que no entendi bn lo ...
  #1 (permalink)  
Antiguo 23/06/2011, 08:40
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
lastInsertId es efectivo PDO

buenas quisiera saber si lastInsertId de PDO es efectivo para retornar el ultimo id de una tabla...

Tengo una duda que no entendi bn lo que explican en php.net , yo inserto una nueva fila y luego llamo asi

$pdo->lastInsertId();

y esto me retornaria el id de esa fila , no existe la posibilidad que me retorne otro id o algo asi?



saludos
  #2 (permalink)  
Antiguo 23/06/2011, 10:43
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 8 meses
Puntos: 101
Respuesta: lastInsertId es efectivo PDO

Según yo entiendo, te devuelve el ultimo id para la coneccion que está corriendo. Pero nunca estuve seguro de esto.
  #3 (permalink)  
Antiguo 23/06/2011, 11:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: lastInsertId es efectivo PDO

Así es te devuelve el ID de la conexión actual, aunque depende MUCHO del RDBMS que estes usando, no todos los RDBMS te devuelven el ID, por ejemplo en Oracle tienes que seleccionar el número de secuencia, etc.

Saludos.
  #4 (permalink)  
Antiguo 23/06/2011, 11:28
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: lastInsertId es efectivo PDO

Estoy utilizando postgres y mysql tendria alguna diferencia .?


saludos
  #5 (permalink)  
Antiguo 23/06/2011, 11:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: lastInsertId es efectivo PDO

Sí, PostgreSQL por default no devuelve el ID, tendrías que hacer algo así:
Código PHP:
Ver original
  1. public function insert($employee){
  2.  
  3.         $sqlQuery = "INSERT INTO employee(user_id,name,address,city) VALUES(:user_id,:name,:address,:city) RETURNING employee_id";
  4.  
  5.         $statement = $this->prepare($sqlQuery);
  6.  
  7.         $a ="2002-03-11 12:01AM" ;
  8.  
  9.         $statement->bindParam(":user_id", $employee->getUserId(), PDO::PARAM_INT);
  10.         $statement->bindParam(":name", $employee->getName(), PDO::PARAM_STR);
  11.         $statement->bindParam(":address", $employee->getAddress(), PDO::PARAM_STR);
  12.         $statement->bindParam(":city", $employee->getCity(), PDO::PARAM_STR);
  13.         $statement->execute();
  14.        
  15.         $result = $statement->fetch(PDO::FETCH_ASSOC);
  16.         return $result["employee_id"];
  17.  
  18.     }

Para obtener el ID...

Saludos.
  #6 (permalink)  
Antiguo 23/06/2011, 13:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: lastInsertId es efectivo PDO

Leyendo también si tienes bien configurada tu sequencia, lastInsertId soporta que le mandes el nombre de la secuencia sin usar returning:
Código PHP:
Ver original
  1. $id = $db->lastInsertId("seq_name");

Saludos.

Última edición por GatorV; 23/06/2011 a las 13:53
  #7 (permalink)  
Antiguo 23/06/2011, 13:43
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 14 años, 8 meses
Puntos: 15
Respuesta: lastInsertId es efectivo PDO

OK muchas gracias por tu respuesta esa ultima me gusta , claro que voy a probar las dos no esta de mas.

saludos
  #8 (permalink)  
Antiguo 23/03/2016, 23:18
Avatar de FkFrank  
Fecha de Ingreso: marzo-2016
Mensajes: 5
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: lastInsertId es efectivo PDO

Ayuda, alguien me podría explicarme de que forma logro obtener el id de la ultima inserción, estoy usando mysql, pero por mas que he tratado no lo consigo, solo logro ejecutar la primera sentencia que es para insertar un registro pero requiero recuperar el id de este para hacer una nueva inserción en otra tabla y posteriormente hacerlo por segunda ocasión.

esta es la forma en que realizo la primera inserción
Código PHP:
Ver original
  1. return $this->bd->executeSQL($sql);

después de estar leyendo que el executeSQL esta en desuso he cambiado a lo siguiente:
Código PHP:
Ver original
  1. $sql="INSERT INTO usuarios (correo, password)
  2.                 VALUES ($this->correo,$this->password);";
  3.                 return $this->bd->executeSQL($sql);
  4.                 $stmt=$con->prepare($sql);
  5.                 $result=$stmt->execute();

hasta ahí cualquiera de las dos funciona bien para insertar, pero luego no logro entender como realizar la recuperación del id y usar ese id para insertar en otra tabla.
agradecería me respondieran y de ser posible me dieran algún ejemplo, algo para orientarme.

De antemano gracias.

Etiquetas: efectivo, pdo
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 22:40.