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.

Dennis Decoene
quelle
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

Dennis Decoene
quelle
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
Link ist tot, aktualisierter Link: ellislab.com/codeigniter/user-guide/database/helpers.html
womd
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

Raja Ram T.
quelle
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}'];
Säugling Rosario
quelle
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()
Madhur
quelle
6

$this->db->insert_id();

Versuchen Sie dies als Ihre gewünschte Frage.

Akash Tyagi
quelle
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.
Nikkolai Fernandez
quelle
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;
}
Raham
quelle
@Dennis Decoene Sie können auch diesen Link ellislab.com/codeIgniter/user-guide besuchen .
Raham
3
$this->db->insert_id();

Gibt die Insert-ID-Nummer zurück, wenn Datenbankeinfügungen durchgeführt werden

Abfragehilfsmethoden für codeigniter-3

Shaiful Islam
quelle
2
$this->db->insert_id()  

// Bitte versuchen Sie dies

Girish Ninama
quelle
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 
Nakendra Pun
quelle
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

Towsif
quelle