CodeIgniter activerecord, recupera l'ultimo ID di inserimento?


153

Esistono opzioni per ottenere l'ultimo ID di inserimento di un nuovo record in CodeIgniter?

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

Considerando la tabella è composta da campi id (incremento automatico) prima colonna e seconda colonna.

In questo modo è possibile utilizzare l'id di inserimento nel seguente codice.


4
Continuo a venire a questa domanda per diverse volte. Molte grazie!
giripp,

Risposte:


277

Mi vergogno...

Ho guardato il guida per utente e la prima funzione è$this->db->insert_id();

Questo funziona anche con inserti activerecord ...

EDIT: ho aggiornato il link


29
l'userguide è il tuo migliore amico per cose come questa. sto usando codeigniter da 2+ anni e trovo ancora funzioni come questa che non ho mai saputo.
Tom Schlick,

8
Assicurati di inserire il tuo inserto e questa funzione in una transazione poiché lo scheduler delle query può inserire un altro oggetto prima di eseguire questa funzione
parker.sikand

3

Devo usare insert_id (), ma non so che insert_id () concesso per ottenere l'ID appartenga a insert () prima di esso! Voglio dire, è possibile recuperare un ID appartenente a un altro inserto () in un'altra richiesta?
NM


11

per la tabella specifica non è possibile utilizzare $ this-> db-> insert_id (). anche l'ultimo inserto è avvenuto molto tempo fa e può essere recuperato in questo modo. potrebbe essere sbagliato. ma funziona bene per me

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

8

Elenco di dettagli che aiuta a richiedere ID e query

Per recuperare l'ultimo ID inserito: questo recupererà gli ultimi record dalla tabella

$this->db->insert_id(); 

Recupero query SQL aggiungere questo dopo la richiesta modale

$this->db->last_query()

6

$this->db->insert_id();

Prova questo come la domanda desiderata.


6

Dopo la query di inserimento, utilizzare questo comando $this->db->insert_id();per restituire l'ultimo ID inserito.

Per esempio:

$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.

5

Prova questo.

public function insert_data_function($your_data)
{
    $this->db->insert("your_table",$your_data);
    $last_id = $this->db->insert_id();
    return $last_id;
}

@Dennis Decoene puoi anche visitare questo link ellislab.com/codeIgniter/user-guide .
Raham,

3
$this->db->insert_id();

Restituisce il numero ID di inserimento quando si eseguono inserimenti di database

Metodi di supporto query per codeigniter-3


2
$this->db->insert_id()  

// per favore prova questo


Questa risposta duplicata non aggiunge alcun nuovo valore alla pagina. Dovrebbe essere rimosso.
Mickmackusa,

1
if($this->db->insert('Your_tablename', $your_data)) {
    return $this->db->insert_id();
}
return false 

0

In codeigniter 3, puoi farlo come segue:

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

Puoi ottenere aiuto per Codeigniter 3 da qui https://codeigniter.com/user_guide/database/helpers.html

In Codeigniter 4, è possibile ottenere l'ultimo ID inserito come segue:

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

Puoi ottenere aiuto per Codeigniter 4 da qui https://codeigniter4.github.io/userguide/database/helpers.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.