2010-09-18 19 views
18

Estoy familiarizado con los principios básicos de PDO.Obteniendo el id de inserción con inserción PDO MySQL

Sin embargo Im tratando de obtener el id de la fila insertada, Im usando:

$query = $system->db->prepare("INSERT INTO {$this->_table} (name,description) VALUES (:name,:description)"); 
$query->execute(array('name'=>$name,'description'=>$description)); 

Los tutoriales que he encontrado son aquéllos en relación con las transacciones, sin embargo yo no estoy usando transacciones!

Respuesta

33

Probablemente estés buscando lastInsertId. "Devuelve el ID de la última fila o valor de secuencia insertado".

$insertedId = $system->db->lastInsertId() ; 
+2

¡Ah, gracias! Por algún motivo, intenté llamarlo a la variable $ query. – pondpad

10

Preste atención al usar transacciones.

Si llama al lastInsertedId después de llamar al commit, lastInsertedId devolverá 0 en lugar de la identificación. Llame lastInsertedId inmediatamente después de execute, pero antes commit.

$this->db->beginTransaction(); 
$this->stmt->execute(); 
$id = $this->db->lastInsertId(); 
$this->db->commit(); 
Cuestiones relacionadas