CodeIgniter – ID del último registro insertado
En muchas ocasiones, cuando insertamos un registro en la base de datos, nos interesa saber que identificador se le ha asignado. Bien, veamos cómo se hace con CodeIgniter saber el ID del último registro insertado:
Supongamos que tenemos la tabla alumno en la base de datos con los siguientes campos:
id integer(11) PRIMARY KEY AUTO_INCREMENT nombre varchar(200) nacimiento date
Fijaos en el campo ‘id’ que es la clave primaria y es autoincrement.
Vale. Ahora en nuesto fichero model que se encarga de insertar los datos (no entro en detalles del controlador y la vista…) tendremos
function alumnoNew() { $sql= "INSERT INTO alumno(id, nombre, nacimiento) VALUES(null,'". $this->input->post('nombre') ."', '". $this->session->userdata('nacimiento') ."')"; if ( $this->db->query($sql) ){ return true; } else { return false; } }
Como podemos ver, la función se encarga de insertar en la BBDD los datos que vienen del formulario. En el caso que haya ido bien, retorna true, y de lo contrario retorna false.
A este alumno se le ha asignado la id incrementando la del anterior. Así cada alumno que vayamos insertando tendrá el 1, 2, 3… y así a cada alumno. Pero, cuando insertamos un alumno, qué id se le ha asignado al nuevo?
function alumnoNew() { $sql= "INSERT INTO alumno(id, nombre, nacimiento) VALUES(null,'". $this->input->post('nombre') ."', '". $this->session->userdata('nacimiento') ."')"; if ( $this->db->query($sql) ){ return $this->db->insert_id();; } else { return false; } }
Aquí hay un cambio. Si ha ido bien, devuelve $this->db->insert_id() que es la función del helper db que nos proporcionar el último id insertado.
Pues nada, tanto royo para solamente decir que con la función $this->db->insert_id() que proporciona el helper db podemos averiguar el último id insertado. Pero creo que con un pequeño ejemplo puede aclarar cosas a mucha gente.
Con una simple función, podemos saber en CodeIgniter el ID del último registro insertado. Espero que el artículo os sea de utilidad.
Más información
Gracias! :).
Muchas gracias, esto es justo lo que necesitaba.