Maison >base de données >tutoriel mysql >Comment récupérer le dernier ID auto-incrémenté après une opération d'insertion dans CodeIgniter Active Record ?

Comment récupérer le dernier ID auto-incrémenté après une opération d'insertion dans CodeIgniter Active Record ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 22:17:02810parcourir

How to Retrieve the Last Auto-Incremented ID After an Insert Operation in CodeIgniter Active Record?

Obtention du dernier identifiant auto-incrémenté avec l'enregistrement actif CodeIgniter

Question :

Vous Vous essayez de récupérer le dernier ID auto-incrémenté après avoir effectué une opération d'insertion à l'aide de l'Active Record de CodeIgniter, mais la méthode add_post() de votre modèle renvoie une valeur vide.

À l'intérieur du contrôleur :

<code class="php">function add_post(){
    $post_data = array(
        'id'            => '',
        'user_id'   =>  '11330',
        'content'   =>  $this->input->post('poster_textarea'),
        'date_time' => date("Y-m-d H:i:s"),
        'status'        =>  '1'
    );
    return $this->blog_model->add_post($post_data);
}</code>

À l'intérieur du modèle :

<code class="php">function add_post($post_data){
    $this->db->trans_start();
    $this->db->insert('posts',$post_data);
    $this->db->trans_complete();
    return $this->db->insert_id();
}</code>

Réponse :

Le problème réside dans l'ordre de opérations dans votre méthode add_post() dans le modèle. Pour récupérer correctement le dernier ID auto-incrémenté après l'opération d'insertion, vous devez :

  1. Effectuer d'abord l'opération d'insertion, en utilisant le $this->db->insert('posts', $post_data).
  2. Ensuite, récupérez le dernier ID inséré à l'aide de la méthode $this->db->insert_id().
  3. Renvoyer le dernier ID inséré comme résultat de la Méthode add_post().

Solution :

<code class="php">function add_post($post_data){
    $this->db->insert('posts', $post_data);
    $insert_id = $this->db->insert_id();

    return $insert_id;
}</code>

Remarque :

Si vous effectuez plusieurs insertions dans une seule transaction, vous pouvez utiliser les méthodes $this->db->trans_start() et $this->db->trans_complete() pour commencer et terminer la transaction.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn