在MySQL中获取最后插入的IDS

voo*_*417 6 php mysql

通过ONE查询在MySQL中多次插入后,是否可以获得所有插入的ID?实施例(摘要):

$ids = array();
$parts = array();
$query = 'INSERT INTO `TABLENAME` (`FIELDS`)  VALUES'; 

$items = array(values);
foreach($items as $item){
   $parts[] = '('.$item['key1'].','.$item['key2']...','.$item['keyN'].')';
}

$query .= implode(',',$parts);
mysqli_query($link,$query);
$ids = ... // getting  ALL inserted IDs
var_dump($ids);
Run Code Online (Sandbox Code Playgroud)

它可以在这里(解决方案之一)这样做.实施例(摘要):

$ids = array();

$items = array(values);
foreach($items as $item){
   $query ='INSERT INTO `TABLENAME` (`FIELDS`)  VALUES('.$item['key1'].','.$item['key2']...','.$item['keyN'].')';
   mysqli_query($link,$query);
   $ids[] = mysqli_insert_id($link);
}
var_dump($ids);  
Run Code Online (Sandbox Code Playgroud)

但是,我想:一个查询INSERT所有项目 - 一个查询获取所有插入的ID.

UPDATE

我的解决方案(基于问题在MySQL中生成一个整数序列).通过单个查询返回最后插入的ID的序列.

$query_inserted_ids = "SELECT @row := @row +1 AS row_id
                       FROM TABLENAME , (SELECT @row := LAST_INSERT_ID()-1 )r
                       WHERE @row <(
                       SELECT id
                       FROM  TABLENAME 
                       ORDER BY id DESC
                       LIMIT 1 )";
Run Code Online (Sandbox Code Playgroud)

谢谢你的关注!

Dig*_*ris 2

MySQL 的

SELECT LAST_INSERT_ID()
Run Code Online (Sandbox Code Playgroud)

将返回从多行插入返回的第一个 ID。如果你把它与

SELECT ROW_COUNT()
Run Code Online (Sandbox Code Playgroud)

您可以从LAST_INSERT_ID()开始,并按ROW_COUNT()中指定的记录数递增。