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

StackOverflow https://stackoverflow.com/questions/1576018

Вопрос

В моем плагине 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.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top