CodeIgniter activerecord, отримати останній номер вставки?


153

Чи є варіанти отримати останній ідентифікатор вставки нового запису в CodeIgniter?

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

Враховуючи таблицю, складається з полів id (автопосилення) першийколонок і другий стовпець.

Таким чином ви можете використовувати ідентифікатор вставки в наступному коді.


4
Я продовжую приходити до цього питання кілька разів. Дуже дякую!
giripp

Відповіді:


277

Мені так соромно...

Я подивився посібник користувача і перша функція є$this->db->insert_id();

Це також працює з activerecord вставками ...

EDIT: Я оновив посилання


29
userguid - ваш найкращий друг для таких речей. я використовую кодигінітер протягом 2+ років, і я все ще знаходжу такі функції, про які я ніколи не знав.
Том Шлік

8
Не забудьте зафіксувати свою вставку та цю функцію в транзакції, оскільки планувальник запитів може вставити інший об’єкт перед запуском цієї функції
parker.sikand

3
посилання мертва, оновлена посилання: ellislab.com/codeigniter/user-guide/database/helpers.html
womd

Мені потрібно використовувати insert_id (), але я не знаю, що insert_id (), наданий для отримання ідентифікатора, належить insert () перед ним! Я маю на увазі, чи можна отримати ідентифікатор, що належить іншій вставці () в іншому запиті?
НМ

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 додайте це після модального запиту

$this->db->last_query()


6

Після введення запиту використовуйте цю команду, $this->db->insert_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.



2
$this->db->insert_id()  

// будь ласка, спробуйте це


Ця дублікатна відповідь не додає нової цінності на сторінку. Його слід видалити.
mickmackusa


0

У кодігнайтері 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.