CodeIgniter activerecord, czy pobrać identyfikator ostatniego wstawienia?

153

Czy są jakieś opcje, aby uzyskać ostatni identyfikator wstawienia nowego rekordu w CodeIgniter?

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

Biorąc pod uwagę tabelę składa się z pól id (autoinkrementacja) pierwsza kolumna i druga kolumna.

W ten sposób możesz użyć insert id w poniższym kodzie.

Dennis Decoene
źródło
4
Wciąż kilka razy dochodzę do tego pytania. Wielkie dzięki!
giripp

Odpowiedzi:

277

Wstyd mi ...

Spojrzałem na podręcznik użytkownika i pierwsza funkcja to$this->db->insert_id();

Działa to również z wkładkami activerecord ...

EDYCJA: zaktualizowałem link

Dennis Decoene
źródło
29
przewodnik użytkownika jest twoim najlepszym przyjacielem do takich rzeczy. Używam CodeIgnitera od ponad 2 lat i nadal znajduję takie funkcje, o których nigdy nie wiedziałem.
Tom Schlick,
8
Pamiętaj, aby umieścić swoją wstawkę i tę funkcję w transakcji, ponieważ harmonogram zapytań może wstawić inny obiekt przed uruchomieniem tej funkcji
parker.sikand
3
link jest martwy, zaktualizowany link: ellislab.com/codeigniter/user-guide/database/helpers.html
womd
Muszę użyć insert_id (), ale nie wiem, czy insert_id () przyznany do uzyskania ID należy do insert () przed nim! Chodzi mi o to, czy możliwe jest pobranie identyfikatora należącego do innego insert () w innym żądaniu?
NM,
37

Identyfikator ostatniego wstawienia oznacza, że ​​możesz uzyskać wstawiony identyfikator automatycznego zwiększania, używając tej metody w aktywnym rekordzie,

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

Możesz polecić ten link, możesz znaleźć więcej rzeczy.

Informacje z wykonania zapytania

Raja Ram T
źródło
link jest nieprawidłowy. popraw link. nowy link codeigniter.com/userguide3/database/helpers.html
Shaiful Islam
11

dla określonej tabeli nie możesz użyć $ this-> db-> insert_id (). nawet ostatnia wstawka wydarzyła się dawno temu, można ją pobrać w ten sposób. może się mylić. ale działa dobrze dla mnie

     $this->db->select_max('{primary key}');
     $result= $this->db->get('{table}')->row_array();
     echo $result['{primary key}'];
Niemowlę Rosario
źródło
8

Lista szczegółów pomocnych w żądaniu identyfikatora i zapytań to

Do pobierania ostatnio wstawionego identyfikatora: Spowoduje to pobranie ostatnich rekordów z tabeli

$this->db->insert_id(); 

Pobieranie zapytania SQL dodaje to po żądaniu modalnym

$this->db->last_query()
Madhur
źródło
6

$this->db->insert_id();

Spróbuj tego jako żądane pytanie.

Akash Tyagi
źródło
6

Po zapytaniu wstawiającym użyj tego polecenia, $this->db->insert_id();aby zwrócić ostatnio wstawiony identyfikator.

Na przykład:

$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
źródło
5

Spróbuj tego.

public function insert_data_function($your_data)
{
    $this->db->insert("your_table",$your_data);
    $last_id = $this->db->insert_id();
    return $last_id;
}
Raham
źródło
@Dennis Decoene możesz również odwiedzić ten link ellislab.com/codeIgniter/user-guide .
Raham,
3
$this->db->insert_id();

Zwraca numer ID wstawiania podczas wstawiania do bazy danych

Metody pomocnika zapytań dla codeigniter-3

Shaiful Islam
źródło
2
$this->db->insert_id()  

// proszę, spróbuj tego

Girish Ninama
źródło
Ta zduplikowana odpowiedź nie dodaje żadnej nowej wartości do strony. Powinien zostać usunięty.
mickmackusa
1
if($this->db->insert('Your_tablename', $your_data)) {
    return $this->db->insert_id();
}
return false 
Nakendra Pun
źródło
0

W Codeigniter 3 możesz to zrobić w następujący sposób:

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

Możesz uzyskać pomoc dotyczącą Codeigniter 3 tutaj https://codeigniter.com/user_guide/database/helpers.html

W Codeigniter 4 możesz uzyskać ostatnio wstawiony identyfikator w następujący sposób:

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

Możesz uzyskać pomoc dotyczącą Codeigniter 4 tutaj https://codeigniter4.github.io/userguide/database/helpers.html

Towsif
źródło