我对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,然后再进行生成自动递增值的调用。可能是每个插入都会生成一个,但是只会是在此调用之前执行的最后一个。