Есть ли способ получить последние сгенерированные идентификаторы auto_increment после вставки нескольких строк с помощью функции mysqli multi_query?
РЕДАКТИРОВАТЬ:
Мне удалось заставить его работать, добавив SELECT LAST_INSERT_ID (); после каждого запроса INSERT в многопроцессорном запросе, а затем используйте mysqli_use_result для получения всех идентификаторов, и я думаю, что это лучший способ.
Вы можете получить различные идентификаторы вставки, вызвав next_result()
MySQLi для каждого последовательного оператора вставки. Насколько мне известно, вам не нужно сохранять какие-либо результаты, пока запросы являются вставными операторами или чем-то другим, которые не возвращают набор результатов.
$sql = new MySQLi("..."); $query = "INSERT STATEMENT NUMBER ONE;"; $query .= "INSERT STATEMENT NUMBER TWO;"; $query .= "INSERT STATEMENT NUMBER THREE"; $sql->multi_query($query); // The first insert id will be available at once $id1 = $sql->insert_id; // The second needs to be handeled a little differently $sql->next_result(); $id2 = $sql->insert_id; // And lastly the third one $sql->next_result(); $id3 = $sql->insert_id;
Вы также можете поместить это в цикл, если вы не уверены в том, сколько ведомостей вставки есть:
$ids = array(); do { $ids[] = $sql->insert_id; $sql->next_result(); } while($sql->more_results());
Это непроверенный псевдокод (как вы могли подумать), но он должен работать.