CodeIgniter activerecord, récupérer le dernier identifiant d'insertion?


153

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émentation) firstcolumn et secondcolumn.

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


4
Je reviens à cette question plusieurs fois. Merci beaucoup!
giripp

Réponses:


277

Honte sur moi...

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

Cela fonctionne également avec les inserts activerecord ...

EDIT: j'ai mis à jour le lien


29
le guide d'utilisation est votre meilleur ami pour des choses comme celle-ci. J'utilise codeigniter depuis plus de 2 ans et je trouve toujours des fonctions comme celle-ci que je n'ai jamais su.
Tom Schlick

8
Assurez-vous d'encapsuler 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
parker.sikand


J'ai besoin d'utiliser insert_id (), mais je ne sais pas que insert_id () accordé pour obtenir l'ID appartient à insert () avant lui! Je veux dire, est-il possible de récupérer des identifiants appartenant à un autre insert () dans une autre demande?
NM

37

Le dernier identifiant d'insertion signifie que vous pouvez obtenir un identifiant d'incrémentation automatique 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, vous pouvez trouver plus de choses.

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


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

11

pour une table spécifique, vous ne pouvez pas utiliser $ this-> db-> insert_id (). même le dernier insert s'est produit il y a longtemps, il peut être récupéré comme ceci. peut être faux. mais fonctionne bien pour moi

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

8

La liste des détails qui aident à demander l'identifiant et les requêtes sont

Pour récupérer le dernier identifiant inséré: cela récupérera les derniers enregistrements de la table

$this->db->insert_id(); 

Récupération de la requête SQL ajouter ceci après la requête modale

$this->db->last_query()

6

$this->db->insert_id();

Essayez ceci en tant que question souhaitée.


6

Après votre requête d'insertion, utilisez cette commande $this->db->insert_id();pour renvoyer 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.

5

Essaye ça.

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, vous pouvez également visiter ce lien ellislab.com/codeIgniter/user-guide .
Raham


2
$this->db->insert_id()  

// veuillez essayer ceci


Cette réponse en double n'ajoute aucune nouvelle valeur à la page. Il devrait être supprimé.
mickmackusa

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

0

Dans codeigniter 3, vous pouvez le faire comme suit:

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

Vous pouvez obtenir de l'aide pour Codeigniter 3 à partir d'ici https://codeigniter.com/user_guide/database/helpers.html

Dans Codeigniter 4, vous pouvez obtenir le dernier identifiant inséré comme suit:

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

Vous pouvez obtenir de l'aide pour Codeigniter 4 à partir d'ici https://codeigniter4.github.io/userguide/database/helpers.html

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.