首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDO最后一次插入ID总是正确的吗?

问PDO最后一次插入ID总是正确的吗?
EN

Stack Overflow用户
提问于 2012-03-27 22:50:06
回答 3查看 7.4K关注 0票数 22

我有以下代码:

代码语言:javascript
复制
<?
$query =$db->prepare("INSERT INTO a_table (id, a_field) VALUES ('', (:a_field)");
$query->bindParam(":a_field", $a_value);
$query->execute();
$last_id = $db->lastInsertId('a_table');
?>

我想问的是这个。想象一下,当两个人完全同时加载页面时,是否有可能在检索最后一个ID之前插入其他人的查询,从而混淆这两个ID?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-27 23:18:44

不,这种情况是不可能的。方法$ DB ->lastInsertId()返回此DB连接最后插入的id。在其他页面将是另一个连接和另一个最后插入的id。

票数 26
EN

Stack Overflow用户

发布于 2012-03-27 22:52:04

PDO将返回当前活动数据库连接插入的最后一个ID。

票数 6
EN

Stack Overflow用户

发布于 2015-01-14 14:34:31

刚刚面临以下情况

有包含另一个文件(如insert.php)的文件post.php。

要插入到mysql中的全部代码都位于insert.php中。

在insert.php中是代码$id_of_inserted_row = $db->lastInsertId();

然后在insert.php中是echo $id_of_inserted_row;,它显示正确的值。

但是post.php中的echo $id_of_inserted_row;显示了错误的值(我看到的是比实际值少了7个数字)。我不明白为什么,只需要考虑一下。

更新

很抱歉,上面写的是因为插入了两个表,并且错误地使用了两个表的相同$id_of_inserted_row = $db->lastInsertId();。

因此,我得到了与其他答案相同的结论:lastInsertId()获取最后插入行的id。

面对的情况。我在mysql中插入了2行。在这种情况下,我看到lastInsertId()是第一个插入行(而不是最后一行)的id。不明白为什么..。找到答案https://stackoverflow.com/a/12574752/2118559

重要信息如果使用单个insert语句插入多个行,则LAST_INSERT_ID()仅返回为第一个插入的行生成的值。这样做的原因是可以在其他服务器上轻松地重现相同的INSERT语句。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9891945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档