我对lastInsertId()函数的编写方式感到困惑。例如,我使用lastInsertId()函数进行以下查询。

$myinsert = $pdo->prepare("INSERT INTO some_table(something)VALUE(:something");
$myinsert -> bindValue(':something', $something);
$myinsert -> execute();

$insert = $pdo->prepare("INSERT INTO table(something)VALUE(:something");
$insert-> bindValue(':something', $something);
$insert-> execute();
$lastId = $pdo->lastInsertId();

$stmt = $pdo->prepare("INSERT INTO another_table(something)VALUE(:something");
$stmt -> bindValue(':something', $something);
$stmt -> execute();


现在的困惑是,众所周知并且在这里可以看到,在状态$lastId = $pdo->lastInsertId();中没有提到是要从$myinsert查询还是$insert查询还是从$stmt查询获取最后插入的ID。那么它如何知道从哪里获取ID?由于lastInsertId()函数位于$stmt查询上方,因此它肯定不会从$stmt查询中获取最后插入的id,因为当$lastid被声明为$stmt查询尚未执行时。但是如何知道必须从$insert查询中获取而不是从$myinsert查询中获取,就像在整个语句$lastId = $pdo->lastInsertId();中一样,没有什么东西可以从特定查询中获取?请帮助我了解它的工作方式。

最佳答案

它将仅给出您最后一次插入的插入ID,然后再进行生成自动递增值的调用。可能是每个插入都会生成一个,但是只会是在此调用之前执行的最后一个。

10-05 22:53