0

我的用户数据库中有一个字段,即注册时生成的 6 位数字。我mt_rand(100000, 999999)用来生成数字。

现在问题来了,为了确保没有人得到相同的数字,我需要将字段设为唯一(我认为这似乎是最好的)而不是一些 PHP 代码。也许还有其他我不知道的方法。问题是,最好的方法是什么?

4

3 回答 3

2

您可以使用 PHP 执行此操作。

首先给unique字段一个约束。

if (mysqli_errno() == 2027)
    mysqli_query("INSERT INTO ... {mt_rand()}");

因此,一旦您插入重复值,它就会给出一个错误代码2027,即重复。您可以重新提交查询。

于 2012-11-13T15:44:03.533 回答
0

你为什么不

  • 使用嵌套选择来获取 max(user_id),增加它并将该值用于新用户?
  • 创建一个仅包含当前用户 ID 的表并获取、增加并使用该值来创建新用户?
  • 使用 AUTO_INCREMENT 列?
于 2012-11-13T15:46:59.503 回答
0

使用AUTO_INCREMENT列。

执行查询以检查生成的号码是否已经存在是一个不好的解决方案,并且随着越来越多的用户注册,因为使用了更多的号码而变得更糟,因此您需要跟踪所有生成的号码以始终生成有效的号码。

对于一AUTO_INCREMENT列,这会“自动”发生。

于 2012-11-13T15:48:14.897 回答