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()
Madhur
источник
6

$this->db->insert_id();

Попробуйте это как желаемый вопрос.

Акаш Тяги
источник
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.
Николай Фернандес
источник
5

Попробуй это.

public function insert_data_function($your_data)
{
    $this->db->insert("your_table",$your_data);
    $last_id = $this->db->insert_id();
    return $last_id;
}
Рахам
источник
@Dennis Decoene, вы также можете посетить эту ссылку ellislab.com/codeIgniter/user-guide .
Рахам
3
$this->db->insert_id();

Возвращает идентификационный номер вставки при выполнении вставок в базу данных

Query Helper Методы для codeigniter-3

Shaiful Ислам
источник
2
$this->db->insert_id()  

// пожалуйста попробуйте это

Гириш Нинама
источник
Этот повторный ответ не добавляет никакой новой ценности на страницу. Это должно быть удалено.
mickmackusa
1
if($this->db->insert('Your_tablename', $your_data)) {
    return $this->db->insert_id();
}
return false 
Накендра Пун
источник
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

Towsif
источник