如何在mysql-php中检索所有最后插入的行ID?

lee*_*evi 5 php mysql last-insert-id

有没有有效的方法使用PHP从mysql数据库中检索所有最后插入的行自动递增的ID?假设我不知道批量中要插入多少行,但插入后我需要所有ID.

谷歌搜索后我没有找到任何有效的方法来做到这一点,所以我不确定是否可能.我可以遵循这个,但必须多次命中数据库才能检索ID.

$data = array (
array(1,2),
array(3,4),
array(5,6)
);

$ids = array();

foreach ($data as $item) {
   $sql = 'insert into table (a,b) values ('.$item[0].','.$item[1].')';
   mysql_query ($sql);
   $ids[] = mysql_insert_id();
}
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 1

您的代码接近完整的解决方案。

$data = array (
array(1,2),
array(3,4),
array(5,6)
);

$ids = array();

foreach ($data as $item) {
   $sql = "INSERT INTO `table` (`a`, `b`) VALUES ('{$item[0]}' ,'{$item[1]}');";
   mysql_query ($sql) or mysql_error();
   $ids[] = mysql_insert_id();
}

var_dump($ids);
Run Code Online (Sandbox Code Playgroud)

如果问题是关于性能问题,那么另一个解决方案可能是

foreach ($data as $item) {
   $sql = "INSERT INTO `table`.`table` (`a`, `b`) VALUES ('{$item[0]}' ,'{$item[1]}');";
   mysql_query ($sql) or mysql_error();
}

$last_id = mysql_insert_id();
$total = count($data);
for($i = 0; $i <= $total; $i++){
    $ids[] = $total-$i;
}
Run Code Online (Sandbox Code Playgroud)

这样可以防止多次sql查询。