我需要从刚刚发生的更新的自动增量列中返回值。
基本上我正在使用XYZ值更新用户:
$stmt->execute();
我需要从数据库中的ID列获取新记录值,该值自动递增。
PDO lastInsertId();
只返回最新记录,在高流量网站上可能存在危险吗?
答案 0 :(得分:4)
我希望你使用MySql ??
来自mysql网站:
生成的ID基于每个连接在服务器中维护。这意味着函数返回给定客户端的值是为该客户端影响AUTO_INCREMENT列的最新语句生成的第一个AUTO_INCREMENT值。此值不受其他客户端的影响,即使它们生成自己的AUTO_INCREMENT值。此行为可确保每个客户端都可以检索自己的ID,而无需关心其他客户端的活动,也无需锁定或事务。
此外:
如果使用单个INSERT语句插入多行,LAST_INSERT_ID()将返回仅为第一个插入行生成的值。
因此它可以保存,因为它可以在连接的基础上运行。如果你插入多行,你可以将它与PDO的rowCount
方法结合起来,以获得所有插入的id。