【发布时间】:2014-01-09 10:55:21
【问题描述】:
是否有可能通过一个查询在 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);
这里可以这样做(解决方案之一)。示例(摘要):
$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);
但是,我想:一个查询插入所有项目 - 一个查询获取所有插入的 ID。
更新
我的解决方案(基于问题generate an integer sequence in 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 )";
感谢关注!
【问题讨论】: