【问题标题】:PHP + mySQLi last id inserted [duplicate]PHP + mySQLi 最后一个 id 插入 [重复]
【发布时间】:2014-10-06 15:20:08
【问题描述】:

我知道 mySQL 有查询 SELECT LAST_INSERT_ID()

当它是一个小型网站并且没有多少用户使用它时,这可以正常工作。但是,当您的网站有更多用户使用它时,此选择可能会出现问题,因为我可以同时插入另一个内容,因此可能会产生问题。

我一直在阅读mySQLiTransactions 的一些内容,但我对此知之甚少。这是获取我插入的最后一个 id 的唯一方法,而不是来自可以与我同时插入内容的其他 id 吗??

提前致谢。

【问题讨论】:

  • 不,它不会引起问题。 LAST_INSERT_ID() 是特定于连接的,每个 PHP 脚本执行都有不同的 MySQL 客户端连接,因此在使用 LAST_INSERT_ID() 时用户彼此隔离。
  • "生成的 ID 在每个连接的基础上维护在服务器中。这意味着函数返回给给定客户端的值是大多数情况下生成的第一个 AUTO_INCREMENT 值该客户端影响 AUTO_INCREMENT 列的最新语句。该值不会受到其他客户端的影响,即使它们生成自己的 AUTO_INCREMENT 值。" dev.mysql.com/doc/refman/5.0/en/…
  • 在 php 中,您可以在 mysqli_query('insert …'); 之后使用 $id = mysqli_last_insert_id()。返回的 id 将始终与您的实际脚本相对应
  • 事务有不同的用途——你可以执行多个INSERT,UPDATE,DELETE查询,如果其中任何一个失败或者你遇到另一个不应该提交到数据库的条件,你可以滚动它们全部回到事务中,将数据库恢复到以前的状态。
  • 感谢您的支持!现在我更好地理解它,正如所说,一旦他们告诉我,这就是我在这里问的原因。谢谢!

标签: php mysql sql mysqli


【解决方案1】:

这不会是一个问题,因为last_insert_id() 只会让您获得在同一会话中插入的最后一个 id。您不必担心。

请注意,它只是SELECT LAST_INSERT_ID();,而不是...FROM table,您不想对表中的每一行都执行此函数。

阅读更多相关信息here

【讨论】:

  • 谢谢。是没有编程的时间,所以我可能不得不刷新一些东西(他们告诉我有一次,从 last_insert_id 问题可能会产生)。再次感谢你和你们所有人!
猜你喜欢
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 2015-03-31
  • 2015-04-23
相关资源
最近更新 更多