【问题标题】:How generate next id number for php mysql driven database如何为php mysql驱动的数据库生成下一个id号
【发布时间】:2012-02-03 07:53:40
【问题描述】:

我有一张表employees,其中包含公司员工的详细信息。

每个人都分配了一个唯一的序列号。每当我们添加一个新员工时,它应该在添加表单中显示一个序列号,该序列号比最后输入的员工的序列号大一个数字。

例如,数据库包含 12 名员工。最后一个条目的序列号是12。当我尝试添加新员工时,它应该自动分配序列号13。所以我不需要输入序列号。我该怎么做?

【问题讨论】:

  • 您没有在员工序列号上使用 auto_increment?为什么不呢?
  • 我正在使用自动增量功能。我知道它会自动获得一个序列号。但我的问题是如何在添加之前在“添加新员工表单”中显示下一个(自动递增的)值。
  • 是否要从表中获取下一个 auto increment_id ?
  • 不要尝试抢占...添加新员工然后检索已添加的自增号....如果必须抢占,添加空白,获取自增号,然后使用表单详细信息更新空白
  • 感谢 Mark Ba​​ker、Muthu 和 Niklas。我从你们所有的 cmets 那里得到了一个整体的想法。谢谢!!!

标签: php mysql select insert-update


【解决方案1】:
for employee_id use auto increment

【讨论】:

    【解决方案2】:

    您无法准确预测下一个 auto_increment ID,即使在查询当前数据库状态时(除了只有一个用户正在使用该应用程序)。示例:您打开表单,从数据库中获取下一个 auto_increment ID 并显示 13 作为下一个预测值。与此同时,另一个用户打开表单并保存它的速度比您快。其他用户记录的真实 ID 为 13,您的记录为 14。

    如果您真的想在表单中显示使用的 ID,则需要对记录进行某种分配(例如,在打开表单并使用其 ID 时创建一个空记录)。使用某种状态字段或必填字段,您可以过滤应用程序中的那些空记录,直到它们完成并定期清除未完成的记录。唯一的缺点是,如果用户在未完成表单的情况下打开表单(例如 14、15、18、20...),它可能会给您不连续的 ID。

    【讨论】:

      【解决方案3】:

      如果序列号设置为 auto_increment,您可以使用以下方法预先查找下一个 auto_increment 值:

      $sql = "SHOW TABLE STATUS LIKE table_name";
      $r = mysql_query($sql);
      
      $row = mysql_fetch_assoc($r);
      $next_increment = $row['Auto_increment'];
      

      其中 table_name 是您的表的名称。

      【讨论】:

        【解决方案4】:

        将序列号设置为 AUTO_INCREMENT

        看看

        http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

        【讨论】:

          猜你喜欢
          • 2021-06-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-24
          • 1970-01-01
          • 2014-06-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多