我有一个预订系统,每次用户单击“new reservation”时,我都必须生成一个新的id,这个id将被传递到隐藏的输入中,因为它们稍后将在链接到预订表的其他SQL表中使用。所以问题的桌子是押金,晚上等等。。
我首先做的是获取列id的最大值,并向其添加1。问题是,当多台计算机(人)使用它时,将生成相同的id。在填写完所有信息之前,不会将id插入数据库。
然后我做的是每次用户点击“Create new reservation”按钮时,我都会将这个id存储在一个临时数据库中,并获取这个表的maxvalue来生成另一个id,这可以工作2/3。
您是否知道每次创建预订时获取唯一id的最佳方式是什么?
我不是要代码,只是要更好的逻辑。

最佳答案

使用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;

10-06 07:39
查看更多