CodeIgniter activerecord, letzte Einfügungs-ID abrufen?


153

Gibt es Optionen, um die letzte Einfügungs-ID eines neuen Datensatzes in CodeIgniter abzurufen?

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

Berücksichtigt man die Tabellenbestände der Felder id (Autoincrement) erste Spalte und zweite Spalte.

Auf diese Weise können Sie die Einfüge-ID im folgenden Code verwenden.


4
Ich komme mehrmals auf diese Frage zurück. Vielen Dank!
Giripp

Antworten:


277

Schande über mich...

Ich habe mir die Bedienungsanleitung angesehen und die erste Funktion ist$this->db->insert_id();

Dies funktioniert auch mit Activerecord-Einsätzen ...

EDIT: Ich habe den Link aktualisiert


29
Der Benutzerführer ist Ihr bester Freund für solche Dinge. Ich benutze Codeigniter seit mehr als 2 Jahren und finde immer noch Funktionen wie diese, von denen ich nie etwas wusste.
Tom Schlick

8
Stellen Sie sicher, dass Sie Ihre Einfügung und diese Funktion in eine Transaktion
einschließen

3

Ich muss insert_id () verwenden, aber ich weiß nicht, dass insert_id (), das zum Abrufen der ID gewährt wurde, zu insert () gehört! Ich meine, ist es möglich, die ID eines anderen insert () in einer anderen Anfrage abzurufen?
NM

37

Letzte Einfüge-ID bedeutet, dass Sie mithilfe dieser Methode im aktiven Datensatz eine automatisch eingefügte ID erhalten können.

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

Sie können auf diesen Link verweisen, um weitere Informationen zu erhalten.

Informationen aus der Ausführung einer Abfrage


Link ist nicht korrekt. Bitte korrigieren Sie den Link. neuer Link codeigniter.com/userguide3/database/helpers.html
Shaiful Islam

11

Für eine bestimmte Tabelle können Sie $ this-> db-> insert_id () nicht verwenden. Sogar die letzte Einfügung ist vor langer Zeit passiert. Sie kann so abgerufen werden. kann falsch sein. aber gut für mich arbeiten

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

8

Eine Liste von Details, die beim Anfordern von IDs und Abfragen hilfreich sind, ist

Zum Abrufen der zuletzt eingefügten ID: Hiermit werden die letzten Datensätze aus der Tabelle abgerufen

$this->db->insert_id(); 

Wenn Sie eine SQL-Abfrage abrufen, fügen Sie diese nach einer modalen Anforderung hinzu

$this->db->last_query()

6

$this->db->insert_id();

Versuchen Sie dies als Ihre gewünschte Frage.


6

Verwenden Sie nach Ihrer Einfügeabfrage diesen Befehl $this->db->insert_id();, um die zuletzt eingefügte ID zurückzugeben.

Beispielsweise:

$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

Versuche dies.

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 Sie können auch diesen Link ellislab.com/codeIgniter/user-guide besuchen .
Raham


2
$this->db->insert_id()  

// Bitte versuchen Sie dies


Diese doppelte Antwort fügt der Seite keinen neuen Wert hinzu. Es sollte entfernt werden.
Mickmackusa

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

0

In Codeigniter 3 können Sie dies wie folgt tun:

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

Hilfe zu Codeigniter 3 erhalten Sie unter https://codeigniter.com/user_guide/database/helpers.html

In Codeigniter 4 können Sie die zuletzt eingefügte ID wie folgt abrufen:

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

Hilfe zu Codeigniter 4 erhalten Sie unter https://codeigniter4.github.io/userguide/database/helpers.html

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.