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.


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


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


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}'];

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()


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.



2
$this->db->insert_id()  

// proszę, spróbuj tego


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 

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.