2011-07-02 20 views

Respuesta

61

Después de llamar al método execute() en el PreparedStatement, la identificación de la fila de inserción estará en el atributo insert_id. Solo léelo.

$pstm->execute(); 
$pstm->insert_id; 
+0

Pero ¿devolverá un ID correspondiente y único para cada uno? ¿ejecución? El comentario principal en [documentación] (http://php.net/manual/en/mysqli-stmt.insert-id.php#102299) dice que debes usar 'mysqli_connection-> insert_id' en lugar de' mysqli_stmt-> insert_id' si ejecuta la misma declaración preparada varias veces. Pensé que podría saber si esto es correcto o no. – Cheslab

6
$newid = mysqli_insert_id($mysqli_db); 

$mysqli_db es su conexión de base de datos mysqli. Por lo que yo sé, no debería importar de qué manera insertaste la fila (declaración preparada o directamente INSERT INTO). mysqli_insert_id() debe devolver la identificación de la última fila insertada usando esta conexión db.

La alternativa es hacer otra consulta como SELECT LAST_INSERT_ID();.

+0

Vale la pena mencionar que este método también funciona en las transacciones (no tan obvio). – Itako

+0

Esto funciona con 'PreparedStatement'? Obtuve el id de este: '$ pstm-> execute();' y después de eso, el atributo 'insert_id' tiene el id:' $ mysqli-> insert_id; ' –

Cuestiones relacionadas