首頁  >  文章  >  資料庫  >  如何在 CodeIgniter Active Record 中執行插入操作後檢索最後一個自動遞增的 ID?

如何在 CodeIgniter Active Record 中執行插入操作後檢索最後一個自動遞增的 ID?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 22:17:02795瀏覽

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

使用CodeIgniter Active Record 獲取最後一個自動遞增的ID

問題:

你正在嘗試使用CodeIgniter 的Active Record 執行插入操作後檢索最後一個自動遞增的ID,但模型中的add_post() 方法會傳回空值。

控制器內部:

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

模型內部:

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

答案>

問題在於順序模型中add_post() 方法中的操作。要正確擷取插入操作後最後一個自增 ID,您需要:

    先執行插入操作,使用 $this->db->insert('posts', $post_data) 方法。
  1. 然後,使用 $this->db->insert_id() 方法檢索最後插入的 ID。
  2. 傳回最後插入的 ID 作為結果add_post() 方法。

解決方案:

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

    return $insert_id;
}</code>

注意:

如果您正在執行在單一交易中進行多次插入,您可以使用$this->db->trans_start() 和$this->db->trans_complete() 方法來開始和結束交易。

以上是如何在 CodeIgniter Active Record 中執行插入操作後檢索最後一個自動遞增的 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn