使用 PDO for MySQL 时存储自动递增的 ID
Posted
技术标签:
【中文标题】使用 PDO for MySQL 时存储自动递增的 ID【英文标题】:Storing Auto-Incremented ID when using PDO for MySQL 【发布时间】:2013-08-10 02:50:49 【问题描述】:我将 PDO 与 mysql 一起使用。我正在插入一个 ID 字段设置为自动增量的表。我想存储该值以在下一行中重用。我该怎么做?
【问题讨论】:
【参考方案1】:来自 php 手册:
返回最后插入的行的 ID,或来自序列对象的最后一个值,具体取决于底层驱动程序。例如,PDO_PGSQL 要求您为 name 参数指定序列对象的名称。
return $db->lastInsertId('yourIdColumn');
【讨论】:
如果两个用户同时插入一些东西,这将如何工作?这是否意味着 user1 的进程将使用 user2 的插入 ID(例如)? 看这个答案***.com/questions/2675766/… 另见我对Easy mysql question regarding primary keys and an insert的回答 @BillKarwin 在我的表中,我总是使用列名 userId 来存储进行插入/更新的用户 ID,我使用这样的查询,SELECT max(id) From Table Where userid ='$UserID'
与 PDO/mysqli/whatever I don'不知道这是不是最好的方法。
@rar: 不,因为它不是返回整个表中最后插入的 ID,而是返回 PDO 对象 $db
上最后插入的 ID,它只属于运行该对象的用户过程。以上是关于使用 PDO for MySQL 时存储自动递增的 ID的主要内容,如果未能解决你的问题,请参考以下文章
使用 PDO/MySQL 将自动增量编号附加到电子邮件中发送和发送电子邮件
在 PDO(使用 MySQL)中执行 INSERT 后获取最后插入的行?