【问题标题】:php mysql_insert_id() possible conflict with multi userphp mysql_insert_id() 可能与多用户冲突
【发布时间】:2013-10-01 13:19:00
【问题描述】:

我们知道 mysql_insert_id() 会给出最后插入的 ID,但我想知道在下面的情况下我们是否会遇到问题。


UserA -> 调用一个函数,将 ROW 插入 TABLE 并获取插入的 ID

执行日期时间:2013-10-01 10:18:25

行 ID:1


UserB -> 调用将插入 ROW 到 TABLE 的函数并获取插入的 ID

执行日期时间:2013-10-01 10:18:26

行 ID:2


请注意,执行时间仅相差一秒。

假设 UserB 在 UserA 执行 mysql_insert_id() 之前完成插入行

UserA会得到ROW ID: 1还是ROW ID: 2

的值

【问题讨论】:

    标签: php mysql-insert-id


    【解决方案1】:

    没有。 mysql_insert_id() 也是连接安全的,因此对于每个用户,它将包含正确的数据,因为他们将使用不同的连接。

    请注意,使用 mysql_ 是个坏主意,因为它们已被弃用

    【讨论】:

      【解决方案2】:

      两个用户将拥有不同的 MySQL 资源链接。 PHP 通过将$link_identifier 参数作为可选参数来为您执行此操作,但您应该指定它。

      见:http://php.net/manual/en/function.mysql-insert-id.php

      强制:不要使用mysql_* 函数,它们已被弃用。

      【讨论】:

        【解决方案3】:

        MySQL 连接。如果未指定链接标识符,则假定由 mysql_connect() 打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个,就好像 mysql_connect() 没有参数被调用一样。如果没有找到或建立连接,则会生成 E_WARNING 级别的错误。

        【讨论】:

          猜你喜欢
          • 2014-05-23
          • 1970-01-01
          • 1970-01-01
          • 2013-03-10
          • 1970-01-01
          • 2012-09-03
          • 2010-12-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多