【问题标题】:Generating PHP/MySQL Reference ID生成 PHP/MySQL 参考 ID
【发布时间】:2009-09-14 18:06:58
【问题描述】:

在 PHP/MySQL 中,生成唯一参考 ID 的最佳方法是什么,以便当一个人将他的信息提交到数据库时,他会获得一个参考号来跟进他的请求?

我已经在使用数据库中的自动增量功能,因为每次用户提交信息时数据都需要是唯一的,但是我需要从数据库中选择特定数据以检索该增量值并显示它与 PHP。

【问题讨论】:

  • 自增列需要是表的主键。
  • 使用 auto_increment 是有意义的,因为它已经是独一无二的。但是为了安全起见,您可能希望给用户一个散列密钥,这样用户就不会试图通过增加或减少他们的问题编号来查看其他人的问题。

标签: php sql mysql


【解决方案1】:

如果您想使用 auto_increment 值,您可以在插入后执行select last_insert_id()

last_insert_id() 是一个 mysql 函数,它返回上次插入的自动增量值。

正如其他人所指出的,一些 mysql 库提供了自己的方法来获取最后一个插入 id

【讨论】:

  • 如果12个人同时提交表格怎么办?会有冲突吗?
  • last_insert_id() 由每个数据库连接维护。由于服务器实例之间不共享连接,因此每个同时提交都有自己的连接。使用 PHP 的持久连接不应该改变这一点。
【解决方案2】:

rexem 的评论是正确的;那么如果你在 PHP 中使用基本的 mysql 命令,你可以使用

$id = mysql_insert_id()

检索最后插入的行的 ID 号(基于该表的主键)。

【讨论】:

    【解决方案3】:

    我可能会选择您已经拥有的 auto_increment 字段:这是一个很好的解决方案 - 可能将它与某些东西连接起来,例如“CMD123456”,它更“人类可读” ”。

    要为当前活动的数据库连接获取最后生成的auto_increment,您可以使用mysql_insert_id 函数——前提是您正在使用mysql_* 函数系列。

    在您完成插入查询后调用它,它会为您获取由/为该查询生成的auto_increment 的值。


    如果使用mysqli_*,则需要mysqli_insert_id,如果使用PDO,则需要PDO::lastInsertId

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 2018-08-11
      • 2012-03-28
      • 1970-01-01
      相关资源
      最近更新 更多