CodeIgniter activerecord เรียกรหัส id ล่าสุดหรือไม่


153

มีตัวเลือกใดบ้างในการรับ id แทรกล่าสุดของบันทึกใหม่ใน CodeIgniter

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

พิจารณาตารางการพิจารณาของฟิลด์ id (autoincrement) คอลัมน์แรกและคอลัมน์ที่สอง

วิธีนี้คุณสามารถใช้รหัสแทรกในรหัสต่อไปนี้


4
ฉันมาที่คำถามนี้หลายครั้ง ขอบคุณมาก!
giripp

คำตอบ:


277

น่าอายจริงๆเรา...

ฉันดูคู่มือผู้ใช้และฟังก์ชั่นแรกคือ$this->db->insert_id();

สิ่งนี้ยังทำงานกับเม็ดมีด activerecord ...

แก้ไข: ฉันปรับปรุงลิงค์


29
คู่มือผู้ใช้เป็นเพื่อนที่ดีที่สุดของคุณสำหรับสิ่งนี้ ฉันใช้ codeigniter มา 2 ปีแล้วและฉันก็ยังหาฟังก์ชั่นแบบนี้ที่ฉันไม่เคยรู้มาก่อน
Tom Schlick

8
ให้แน่ใจว่าได้แทรกการแทรกของคุณและฟังก์ชั่นนี้ในการทำธุรกรรมในขณะที่แบบสอบถามตารางเวลาอาจแทรกวัตถุอื่นก่อนที่จะใช้ฟังก์ชั่นนี้
parker.sikand

3
ลิงก์นั้นตายแล้วลิงก์ที่อัปเดต: ellislab.com/codeigniter/user-guide/database/helpers.html
womd

ฉันต้องใช้ insert_id () แต่ฉันไม่รู้ว่า insert_id () ให้สิทธิ์เพื่อรับ ID เป็นของ insert () ก่อน! ฉันหมายถึงมันเป็นไปได้ที่จะดึง ID เป็นอีกส่วนหนึ่งแทรก () ในคำขออื่นหรือไม่?
NM

37

รหัสแทรกสุดท้ายหมายความว่าคุณสามารถแทรกรหัสเพิ่มอัตโนมัติได้โดยใช้วิธีนี้ในบันทึกที่ใช้งาน

$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
Shaiful ศาสนาอิสลาม

11

สำหรับตารางเฉพาะคุณไม่สามารถใช้ $ this-> db-> insert_id () แม้การแทรกครั้งสุดท้ายจะเกิดขึ้นนานมาแล้วมันสามารถดึงกลับมาได้เช่นนี้ อาจจะผิด แต่ทำงานได้ดีสำหรับฉัน

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

8

รายการรายละเอียดที่ช่วยในการขอรหัสและแบบสอบถามคือ

สำหรับการดึงรหัสที่แทรกล่าสุด: นี่จะดึงข้อมูลระเบียนสุดท้ายจากตาราง

$this->db->insert_id(); 

การดึงเคียวรี SQL เพิ่มสิ่งนี้หลังจากคำร้องขอ modal

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

5

ลองสิ่งนี้

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 คุณสามารถไปที่ลิงค์นี้ellislab.com/codeIgniter/user-guide
Raham


2
$this->db->insert_id()  

// โปรดลองสิ่งนี้


คำตอบที่ซ้ำกันนี้จะไม่เพิ่มค่าใหม่ให้กับหน้า มันควรจะถูกลบออก
mickmackusa


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 คุณจะได้รับรหัสที่ใส่ครั้งสุดท้ายดังนี้:

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