Как получить последний вставленный идентификатор строки из базы данных 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
Ответ 2
Вот как я это сделал, в моем коде
...
global $wpdb;
$query = "INSERT INTO... VALUES(...)" ;
$wpdb->query(
$wpdb->prepare($query)
);
return $wpdb->insert_id;
...
Дополнительные переменные класса
Ответ 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.