Как получить последний вставленный идентификатор строки из базы данных WordPress?

Мой плагин WordPress имеет таблицу с полем первичного ключа AUTO_INCREMENT с именем ID. Когда новая строка вставляется в таблицу, я хотел бы получить значение идентификатора вставки.

Особенность заключается в использовании AJAX для отправки данных на сервер для вставки в БД. Новый идентификатор строки возвращается в ответе AJAX для обновления статуса клиента. Возможно, что несколько клиентов публикуют данные на сервере одновременно. Итак, я должен убедиться, что каждый AJAX-запрос получит в ответ EXACT новый идентификатор строки.

В PHP есть метод mysql_insert_id для этой функции. Но он действителен для состояния гонки, только если аргумент является link_identifier последней операции. Моя работа с базой данных на $ wpdb. Как извлечь link_identifier из $ wpdb, чтобы убедиться, что mysql_insert_id работает? Есть ли другой способ получить идентификатор последней вставленной строки из $ wpdb?

Благодарю.

Ответ 1

Сразу после $wpdb->insert() который выполняет вставку, сделайте это:

$lastid = $wpdb->insert_id;

Более подробную информацию о том, как сделать WordPress, можно найти в кодексе WordPress. Подробности выше были найдены здесь на странице класса wpdb

Ответ 3

Что-то вроде этого тоже должно это сделать:

$last = $wpdb->get_row("SHOW TABLE STATUS LIKE 'table_name'");
$lastid = $last->Auto_increment;

Ответ 4

Ввод вызова mysql_insert_id() внутри транзакции должен сделать это:

mysql_query('BEGIN');
// Whatever code that does the insert here.
$id = mysql_insert_id();
mysql_query('COMMIT');
// Stuff with $id.