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.

Dennis Decoene
la source
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

Dennis Decoene
la source
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
3
lien est mort, lien mis à jour: ellislab.com/codeigniter/user-guide/database/helpers.html
womd
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

Raja Ram T
la source
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}'];
Bébé Rosario
la source
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()
Madhur
la source
6

$this->db->insert_id();

Essayez ceci en tant que question souhaitée.

Akash Tyagi
la source
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.
Nikkolai Fernandez
la source
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;
}
Raham
la source
@Dennis Decoene, vous pouvez également visiter ce lien ellislab.com/codeIgniter/user-guide .
Raham
3
$this->db->insert_id();

Renvoie le numéro d'identification de l'insertion lors de l'insertion de la base de données

Méthodes d'aide à la requête pour codeigniter-3

Islam Shaiful
la source
2
$this->db->insert_id()  

// veuillez essayer ceci

Ninama girish
la source
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 
Nakendra Pun
la source
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

Towsif
la source