1 回答
TA贡献1856条经验 获得超11个赞
您无法获取下一个 id,您可以做的是执行不带 :nextRow (null 或其他临时值)的 INSERT,存储插入行的 id 并在下一个循环中运行插入新行并用此更新上一个行新行 ID 作为 nextRow。
像这样的东西:
<?php
$stmt = $pdo->prepare("INSERT INTO row (name, prev_row, next_row) VALUES (:name, :prevRow, :nextRow");
$stmtUpdate = $pdo->prepare("UPDATE row SET next_row = :nextRow WHERE id = :id");
$previousId = null;
foreach ($rows as $row) {
// insert current row without nextRow
$stmt->bindParam(":name", $row->getName());
$stmt->bindParam(":prevRow", $pdo->lastInsertID());
$stmt->bindParam(":nextRow", null);
$stmt->execute();
if ($previousId) {
// update previous row with this rows id as its nextRow
$stmtUpdate->bindParam(":nextRow", $pdo->lastInsertId());
$stmtUpdate->bindParam(":id", $previousId);
$stmtUpdate->execute();
}
$previousId = $pdo->lastInsertID();
}
这也是有道理的,因为您插入的最后一行不会有nextRow
- 1 回答
- 0 关注
- 104 浏览
添加回答
举报