CodeIgniter activerecord、最後の挿入IDを取得しますか?


153

CodeIgniterの新しいレコードの最後の挿入IDを取得するオプションはありますか?

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

フィールドid(autoincrement)のfirstcolumnとsecondcolumnのテーブル構成を考慮します。

これにより、次のコードで挿入IDを使用できます。


4
私はこの質問に何度も来ています。どうもありがとう!
giripp 2014年

回答:


277

私の恥...

ユーザーガイドを見て、最初の機能は$this->db->insert_id();

これは、activerecord挿入でも機能します...

編集:私はリンクを更新しました


29
ユーザーガイドは、このようなことのためのあなたの親友です。codeigniterを2年以上使用していますが、まだこのような機能を知りませんでした。
トムシュリック2010年

8
この機能を実行する前に別のオブジェクトを挿入することができるクエリスケジューラ等の取引にあなたのインサートと、この機能をラップしてください
parker.sikand

3
リンクが無効になり
womd

insert_id()を使用する必要がありますが、IDを取得するために付与されたinsert_id()がそれより前のinsert()に属していることを知りません!つまり、別のリクエストで別のinsert()に属するIDを取得することは可能ですか?
NM

37

最後の挿入IDは、アクティブレコードでこのメソッドを使用して、挿入された自動インクリメントIDを取得できることを意味します。

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

このリンクを参照すると、さらに多くのものを見つけることができます。

クエリの実行からの情報


リンクが正しくありません。リンクを修正してください。新しいリンクcodeigniter.com/userguide3/database/helpers.html
Islam

11

特定のテーブルでは、$ this-> db-> insert_id()は使用できません。最後の挿入でさえずっと前に発生しましたが、このようにしてフェッチできます。間違っているかもしれません。しかし、私にとってはうまくいきます

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

8

IDとクエリのリクエストに役立つ詳細のリストは

最後に挿入されたIDをフェッチする場合:テーブルから最後のレコードをフェッチします

$this->db->insert_id(); 

フェッチSQLクエリは、モーダルリクエストの後にこれを追加します

$this->db->last_query()


6

挿入クエリの後、このコマンド$this->db->insert_id();を使用して、最後に挿入されたIDを返します。

例えば:

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





0

codeigniter 3では、次のように実行できます。

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

Codeigniter 3のヘルプは、https: //codeigniter.com/user_guide/database/helpers.htmlから入手できます

Codeigniter 4では、最後に挿入されたIDを次のように取得できます。

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

ここからCodeigniter 4のヘルプを取得できますhttps://codeigniter4.github.io/userguide/database/helpers.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.