目前,我的表名称路由的列如下所示
我想做的是将第一个insertd_id插入具有相同值的master_id中。该查询将在循环中运行,就像此示例一样,它将运行4次。示例:
+-----+------+-----------+
| id | name | master_id |
+-----+------+-----------+
| 625 |name_1| 625 |
| 626 |name_3| 625 |
| 627 |name_3| 625 |
| 628 |name_4| 625 |
我的参考资料和我尝试过的内容 Can't run Insert and Select LAST_INSERT_ID() in the same query??
for ($i = 0; $i <= $array_length - 1; $i++){
for($j = $i + 1; $j < $array_length; $j++){
$select_last_inserted_id = $con->query("select LAST_INSERT_ID() as last_insert_id from routes");
$last_insert_id = mysqli_fetch_assoc($select_last_inserted_id);
$routes = "insert into routes(name, master_id) values('$name',".$last_insert_id['last_insert_id'].")";
}
}
我当前的结果(错误的一个)
+-----+------+-----------+
| id | name | master_id |
+-----+------+-----------+
| 625 |name_1| 0 |
| 626 |name_3| 625 |
| 627 |name_3| 626 |
| 628 |name_4| 627 |
答案 0 :(得分:0)
您可以在一个查询中使用两个语句
INSERT INTO routes(name) values('name')
UPDATE routes set master_id = (select max(id) from routes)
where id = (select max(id) from routes)
首先,它将以递增的id
插入新行,然后以master_id
更新max(id)
更新
根据您在queston中的最新更新,首先,您需要在foreach循环中插入一行,并通过php获取其最后插入的ID,然后在那里更新该行。然后在循环中添加插入查询,该查询带有您先前在master_id
列中获得的最后插入的ID。就这样