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


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

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

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

спасибо.

4 69

4 ответа:

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

$lastid = $wpdb->insert_id;

более подробную информацию о том, как делать вещи wordpress путь можно найти в Кодексе wordpress. Подробности выше были найдены здесь на страница класса 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.