我对写入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
查询中获取最后插入的ID或来自$stmt
查询。那么它如何知道从何处获取ID?由于lastInsertId()
函数位于$stmt
查询之上,因此当$stmt
$lastid
查询$stmt
时,它肯定不会从$insert
查询中获取最后插入的ID尚未执行。但是它如何知道它必须从$myinsert
查询而不是从$lastId = $pdo->lastInsertId();
查询获取,因为在整个语句slice(0, your_count)
中没有任何定义类似于从某某特定查询获取?请帮助我理解它的工作方式。
答案 0 :(得分:1)
它只会在进行调用之前从最后一个插入中提供插入ID,从而生成一个自动增量值。可能每个插入都会生成一个,但它只是在此调用之前执行的最后一个插入。