PHP PDO lastInsertId() 函数混淆

标签 php mysql pdo

我对 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(); 中没有提到是否从中获取最后插入的 ID $myinsert 查询或 $insert 查询或来自 $stmt 查询。那么它怎么知道从哪里获取 ID 呢?由于 lastInsertId() 函数位于 $stmt 查询之上,因此它肯定不会从 $stmt 查询中获取最后插入的 ID $lastid 已声明 $stmt 查询尚未执行。但是它怎么知道它必须从 $insert 查询中获取,而不是从整个语句 $lastId = $pdo->lastInsertId() 中的 $myinsert 查询中获取; 没有定义像从某某特定查询中获取的内容?请帮助我了解它的工作方式。

最佳答案

它只会为您提供生成自动增量值的调用之前最后一次插入的插入 ID。可能每个插入都会生成一个,但它只会是此调用之前执行的最后一个。

关于PHP PDO lastInsertId() 函数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44537751/

相关文章:

PHP 编辑表单未正确发送到 MySql

php - InnoDB中具有表锁的MySQL/InnoDB事务

PHP - foreach 循环的效率

php - 数据库没有在 laravel 中插入值?

php - 转换符号(版权、注册等)

php - Cloudflare 上的 Laravel 在表单错误上产生 502 Bad Gateway

php - 如何在自定义类 laravel 5 中使用 session ?

mysql - 自动完成mysql大表

mysql - tomcat jdbc连接池中缺少连接

mysql - 从数据库中删除单行