CodeIgniter activerecord, получить последний идентификатор вставки?


153

Есть ли варианты получить последний идентификатор вставки новой записи в CodeIgniter?

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

Учитывая таблицу состоит из полей id (автоинкремент) firstcolumn и secondcolumn.

Таким образом, вы можете использовать идентификатор вставки в следующем коде.


4
Я продолжаю приходить к этому вопросу несколько раз. Большое спасибо!
Гирипп

Ответы:


277

Мне стыдно...

Я посмотрел на руководство пользователя, и первая функция$this->db->insert_id();

Это также работает со вставками activerecord ...

РЕДАКТИРОВАТЬ: я обновил ссылку


29
Руководство пользователя - ваш лучший друг для подобных вещей. я использую codeigniter уже более 2 лет и все еще нахожу такие функции, о которых я никогда не знал.
Том Шлик

8
Обязательно оберните вашу вставку и эту функцию в транзакцию, так как планировщик запросов может вставить другой объект перед запуском этой функции
parker.sikand

3
ссылка устарела
womd

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

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 Islam

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

В codeigniter 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.