这是我的(简化)代码。
$sql = "
INSERT INTO Orders
(
UserID,
DeliverToID,
BillToID
)
VALUES
(?,?,?)
";
$stmt = $conn->prepare($sql);
$stmt->bind_param('iii', $userId, $deliveryID, $billingID);
$stmt->execute();
$conn->commit();
$orderID = mysqli_insert_id($conn);
问题是mysqli_insert_id总是返回零。 Orders表有一个Auto Generated列,因此根据文档,它应该可以工作。
但是,我发现如果我在提交之前移动mysqli_insert_id,那么它返回最后插入的ID就好了。 但我不明白为什么我在PHP在线文档中找不到任何解释它,除了11年前的评论,说明同样的问题,但没有合理的解释。