it-swarm.com.ru

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

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

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

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

Благодарю.

81
Morgan Cheng

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

$lastid = $wpdb->insert_id;

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

162
jsnfwlr

Вот как я это сделал, в моем коде

 ...
 global $wpdb;
 $query =  "INSERT INTO... VALUES(...)" ;
 $wpdb->query(
        $wpdb->prepare($query)
);
return $wpdb->insert_id;
...

Больше переменных класса

13
Francisco Corrales Morales

Нечто подобное должно сделать это тоже:

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