代码之家  ›  专栏  ›  技术社区  ›  Nina

在SQL PHP中自动生成ID

  •  1
  • Nina  · 技术社区  · 7 年前

    我有一个预订系统,每次用户单击“新预订”时,我都必须生成一个新的ID,这个ID将被传递到隐藏的输入中,因为它们稍后会在链接到预订表的其他SQL表中使用。所以有问题的桌子是押金,晚上等等。

    我首先做的是获取列ID的最大值,并向其添加1。问题是,当多台计算机(人)使用它时,会生成相同的ID。在填写完所有信息之前,不会将ID插入数据库。

    然后我所做的是,每次用户单击“创建新预订”按钮时,我都会将该ID存储在临时数据库中,并获取该表的maxValue以生成另一个ID。这适用于2/3。

    您是否知道每次创建预订时获取唯一ID的最佳方法是什么?

    我不是要代码,只是一个更好的逻辑。

    5 回复  |  直到 7 年前
        1
  •  1
  •   Dan    7 年前

    使用 mysql_last_id 要获取上次插入的ID,请执行以下操作:

    $mysqli = new mysqli("localhost", "user", "password", "database");
    $mysqli->query("INSERT INTO table (id, column1, column2) VALUES (NULL, 'Value #1', 'Value #2')");
    
    printf("<p>ID of the previous record: %d.</p>", $mysqli->insert_id);
    

    要添加自动递增的ID列,请使用以下命令:

    ALTER TABLE `table` ADD `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (`id`);
    

    您还可以选择下一个ID的开头:

    ALTER TABLE `table` AUTO_INCREMENT=123;
    
        2
  •  4
  •   MoeAmeen Mayet    7 年前

    使列ID自动递增,这样每次用户单击新的预订时,都会继续提供新的ID。 auto increment

    上面的链接将向您展示如何执行此操作…. 对于夜间和预订表,可以从夜间表复制数据,并使用insert into select语句将其添加到预订表中。 insert into

    上面的链接将帮助您做到这一点。

        3
  •  0
  •   George Menoutis    7 年前

    我在其他地方看到的一个想法是基于当前日期时间(最好精确到毫秒)创建一个数字,并创建记录的计算机/用户帐户的唯一字段。

    现在,“基于”意味着您可以自定义这种功能。

        4
  •  0
  •   Artheriom    7 年前

    更好的方法是使用SQL自动增量。您不必在表单中发送“ID”。发送表单时,只需插入收到的数据:MySQL将自动在“id”中插入正确的值。如果需要返回此ID,可以使用SELECT语句。

        5
  •  0
  •   Mohammedis271    7 年前

    您还可以查看下面的视频,该视频向您展示了如何创建表并将字段添加为自动增量: Auto increment video

    推荐文章