Как получить идентификатор последней вставленной строки из базы данных WordPress?
-
21-09-2019 - |
Вопрос
В моем плагине WordPress есть таблица с АВТО_ИНКРЕМЕНТ поле первичного ключа называется ID.Когда новая строка вставляется в таблицу, я хотел бы получить значение ID вставки.
Функция заключается в использовании AJAX для отправки данных на сервер для вставки в базу данных.Новый идентификатор строки возвращается в ответе AJAX для обновления статуса клиента.Возможно, что несколько клиентов отправляют данные на сервер одновременно.Итак, я должен убедиться, что каждый AJAX-запрос получает в ответ ТОЧНЫЙ новый идентификатор строки.
В PHP есть метод, который называется mysql_insert_id для этой функции.Но это справедливо для условия гонки, только если аргумент равен link_identifier ( идентификатор ссылки) о последней операции.Моя работа с базой данных выполняется в $ wpdb.Как извлечь link_identifier ( идентификатор ссылки) из $ wpdb, чтобы убедиться, что mysql_insert_id работает?Есть ли какой-либо другой способ получить идентификатор последней вставленной строки из $ wpdb?
Спасибо.
Решение
Сразу после $wpdb->insert()
это делает вставку, сделайте это:
$lastid = $wpdb->insert_id;
Более подробную информацию о том, как делать что-либо с помощью WordPress, можно найти в WordPress codex.Вышеприведенные подробности были найдены здесь, на страница класса wpdb
Другие советы
Вот как я это сделал в своем коде
...
global $wpdb;
$query = "INSERT INTO... VALUES(...)" ;
$wpdb->query(
$wpdb->prepare($query)
);
return $wpdb->insert_id;
...
Что-то вроде этого тоже должно это сделать :
$last = $wpdb->get_row("SHOW TABLE STATUS LIKE 'table_name'");
$lastid = $last->Auto_increment;
Передача вызова в mysql_insert_id()
внутри транзакции это должно быть сделано:
mysql_query('BEGIN');
// Whatever code that does the insert here.
$id = mysql_insert_id();
mysql_query('COMMIT');
// Stuff with $id.