CodeIgniter activerecord, son ekleme kimliği al?


153

CodeIgniter'da yeni bir kaydın son ekleme kimliğini almak için herhangi bir seçenek var mı?

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

Tablo id'leri dikkate alınarak id (autoincrement) ilk sütun ve ikinci sütun.

Bu şekilde insert kimliğini aşağıdaki kodda kullanabilirsiniz.


4
Bu soruya birkaç kez geliyorum. Çok teşekkürler!
giripp

Yanıtlar:


277

Yazıklar olsun ...

Kullanım kılavuzuna baktım ve ilk fonksiyon$this->db->insert_id();

Bu ayrıca aktüatör kayıt uçları ile de çalışır ...

EDIT: Bağlantıyı güncelledim


29
userguide böyle şeyler için en iyi arkadaşınızdır. 2 + yıldır codeigniter kullanarak ve hala hiç bilmiyordum böyle fonksiyonları bulmak.
Tom Schlick

8
Sorgu zamanlayıcı bu işlevi çalıştırmadan önce başka bir nesne ekleyebileceğinden, eklemenizi ve bu işlevi bir işleme
sardığınızdan

3
bağlantı öldü, güncel bağlantı: ellislab.com/codeigniter/user-guide/database/helpers.html
womd

Insert_id () kullanmanız gerekiyor, ancak ID almak için verilen insert_id () önce insert () ait olduğunu bilmiyorum! Yani, başka bir istekte başka bir insert () ait kimliği almak mümkün mü?
NM


11

Belirli tablo için $ this-> db-> insert_id () kullanamazsınız. hatta son ek çok uzun zaman önce gerçekleşmişti. yanlış olabilir. ama benim için iyi çalışıyor

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

8

Kimlik ve sorgu isteğinde yardımcı olan ayrıntıların listesi

Son eklenen kimliği almak için: Bu tablodan son kayıtları getirecektir

$this->db->insert_id(); 

Kalıcı istek sonrasında SQL sorgusu getiriliyor

$this->db->last_query()


6

Ekleme sorgunuzdan sonra $this->db->insert_id();, son eklenen kimliği döndürmek için bu komutu kullanın.

Örneğin:

$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

Bunu dene.

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 ayrıca bu linki ziyaret edebilirsiniz ellislab.com/codeIgniter/user-guide .
Raham



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

0

Codeigniter 3'te aşağıdaki gibi yapabilirsiniz:

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

Codeigniter 3 için https://codeigniter.com/user_guide/database/helpers.html adresinden yardım alabilirsiniz.

Codeigniter 4'te, son eklenen kimliği aşağıdaki gibi alabilirsiniz:

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

Codeigniter 4 için https://codeigniter4.github.io/userguide/database/helpers.html adresinden yardım alabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.