154 votes

CodeIgniter activerecord, récupérer l'id de la dernière insertion ?

Existe-t-il des options pour obtenir le dernier identifiant d'insertion d'un nouvel enregistrement dans CodeIgniter ?

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

Considérant que la table est composée de champs id (auto-incrément), première colonne et deuxième colonne.

De cette façon, vous pouvez utiliser l'identifiant d'insertion dans le code suivant.

4 votes

Je me suis posé cette question à plusieurs reprises. Merci beaucoup !

278voto

Dennis Decoene Points 2246

Honte à moi...

J'ai regardé le guide de l'utilisateur et la première fonction est $this->db->insert_id();

Cela fonctionne également avec les insertions d'Active Record...

EDIT : J'ai mis à jour le lien

29 votes

Le guide de l'utilisateur est votre meilleur ami pour ce genre de choses. j'utilise Codeigniter depuis plus de deux ans et je trouve encore des fonctions comme celle-ci dont je n'avais jamais entendu parler.

8 votes

Veillez à inclure votre insertion et cette fonction dans une transaction, car le planificateur de requêtes peut insérer un autre objet avant d'exécuter cette fonction.

3 votes

Le lien est mort, le lien a été mis à jour : ellislab.com/codeigniter/guide-utilisateur/base-de-données/helpers.html

37voto

Raja Ram T Points 37

Last insert id signifie que vous pouvez obtenir l'id auto incrémenté inséré en utilisant cette méthode dans l'enregistrement actif,

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

Vous pouvez consulter ce lien pour trouver d'autres informations.

Informations provenant de l'exécution d'une requête

0 votes

Le lien n'est pas correct. veuillez corriger le lien. nouveau lien codeigniter.com/userguide3/database/helpers.html

11voto

Infant Rosario Points 149

Pour une table spécifique, vous ne pouvez pas utiliser $this->db->insert_id(). même si la dernière insertion a eu lieu il y a longtemps, elle peut être récupérée de cette façon. c'est peut-être faux, mais cela fonctionne bien pour moi.

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

8voto

Madhur Points 455

La liste des détails qui aident à demander un identifiant et des requêtes est la suivante

Pour récupérer le dernier ID inséré : Ceci récupérera les derniers enregistrements de la table.

$this->db->insert_id(); 

La requête SQL récupérée ajoute ceci après la demande modale

$this->db->last_query()

7voto

Après votre requête d'insertion, utilisez cette commande $this->db->insert_id(); pour retourner le dernier identifiant inséré.

Par exemple :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X