CodeIgniter activerecord, recuperar la última identificación de inserción?

153

¿Hay alguna opción para obtener la última identificación de inserción de un nuevo registro en CodeIgniter?

$last_id = $this->db->insert('tablename',
    array('firstcolumn' => 'value',
    'secondcolumn' => 'value')
);

Teniendo en cuenta la tabla consta de campos id (incremento automático) firstcolumn y secondcolumn.

De esta manera, puede usar la identificación de inserción en el siguiente código.

Dennis Decoene
fuente
44
Sigo llegando a esta pregunta varias veces. ¡Muchas gracias!
giripp

Respuestas:

277

Me avergüenza...

Miré la guía del usuario y la primera función es$this->db->insert_id();

Esto también funciona con inserciones de registro activo ...

EDITAR: actualicé el enlace

Dennis Decoene
fuente
29
la guía del usuario es tu mejor amigo para cosas como esta. He estado usando codeigniter durante más de 2 años y todavía encuentro funciones como esta que nunca supe.
Tom Schlick
8
Asegúrese de ajustar su inserción y esta función en una transacción, ya que el programador de consultas puede insertar otro objeto antes de ejecutar esta función
parker.siky
3
el enlace está muerto, enlace actualizado: ellislab.com/codeigniter/user-guide/database/helpers.html
womd
¡Necesito usar insert_id (), pero no sé si insert_id () otorgado para obtener ID pertenece a insert () antes! Quiero decir, ¿es posible recuperar ID pertenecer a otro insert () en otra solicitud?
NM
37

La última identificación de inserción significa que puede insertar la identificación de incremento automático mediante el uso de este método en el registro activo,

$this->db->insert_id() 
// it can be return insert id it is 
// similar to the mysql_insert_id in core PHP

Puede consultar este enlace, puede encontrar algunas cosas más.

Información de ejecutar una consulta

Raja Ram T
fuente
El enlace no es correcto. Corrija el enlace. nuevo enlace codeigniter.com/userguide3/database/helpers.html
Shaiful Islam
11

para la tabla específica no puede usar $ this-> db-> insert_id (). incluso el último inserto ocurrió hace mucho tiempo, se puede obtener de esta manera. puede estar mal. pero trabajando bien para mi

     $this->db->select_max('{primary key}');
     $result= $this->db->get('{table}')->row_array();
     echo $result['{primary key}'];
Rosario infantil
fuente
8

Lista de detalles que ayudan a solicitar id y consultas son

Para buscar el último Id insertado: Esto buscará los últimos registros de la tabla

$this->db->insert_id(); 

Obteniendo consulta SQL, agregue esto después de la solicitud modal

$this->db->last_query()
Madhur
fuente
6

$this->db->insert_id();

Prueba esto como tu pregunta deseada.

Akash Tyagi
fuente
6

Después de su consulta de inserción, use este comando $this->db->insert_id();para devolver la última identificación insertada.

Por ejemplo:

$this->db->insert('Your_tablename', $your_data);

$last_id =  $this->db->insert_id();

echo $last_id // assume that the last id from the table is 1, after the insert query this value will be 2.
Nikkolai Fernandez
fuente
5

Prueba esto.

public function insert_data_function($your_data)
{
    $this->db->insert("your_table",$your_data);
    $last_id = $this->db->insert_id();
    return $last_id;
}
Raham
fuente
@Dennis Decoene también puede visitar este enlace ellislab.com/codeIgniter/user-guide .
Raham
3
$this->db->insert_id();

Devuelve el número de ID de inserción cuando se realizan inserciones de bases de datos

Métodos de ayuda de consulta para codeigniter-3

Shaiful Islam
fuente
2
$this->db->insert_id()  

// por favor prueba esto

Girina Ninama
fuente
Esta respuesta duplicada no agrega ningún valor nuevo a la página. Debería ser eliminado.
mickmackusa
1
if($this->db->insert('Your_tablename', $your_data)) {
    return $this->db->insert_id();
}
return false 
Nakendra Pun
fuente
0

En codeigniter 3, puede hacerlo de la siguiente manera:

if($this->db->insert("table_name",$table_data)) {
    $inserted_id = $this->db->insert_id();
    return $inserted_id;
}

Puede obtener ayuda para Codeigniter 3 desde aquí https://codeigniter.com/user_guide/database/helpers.html

En Codeigniter 4, puede obtener la última identificación insertada de la siguiente manera:

$builder = $db->table("your table name");
if($builder->insert($table_data)) {
    $inserted_id = $db->insertID();
    return $inserted_id;
}

Puede obtener ayuda para Codeigniter 4 desde aquí https://codeigniter4.github.io/userguide/database/helpers.html

Towsif
fuente