0

我制作了一个生成不同类型代码的小代码,但我会让它更简单,

我在提交时提交了一个注册表单我收集了一些关于用户的信息,我为他创建了一个随机的,但我希望这个随机对于这个用户来说是唯一的。

所以我有3个案例:

$code_random = rand(1000,9999);
    if($code_random < 0){
    $code_random = -$code_random;
    }

$random = $fname.$code_random; //case 1
$random = $lname.$code_random; //case 2
$random = $fname.lname.$code_random; //case 3

但是我想创建案例 1 检查数据库中是否存在此随机数,如果它确实使用了第二种情况,如果它确实使用了第三种情况,则在提交表单之前并且不为用户显示任何内容。

提前感谢您的帮助。

4

3 回答 3

1

不要重新发明轮子 - SQL 数据库有两种很好的方法来为每一行分配唯一的 ID。

1) 自动递增主键 - 每增加一个新行。由数据库管理,保证不会对两行错误地使用相同的值。漂亮又小又简单。http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

2) GUID(也称为 UUID)——用于生成 GUID 的算法意味着您永远不会看到同一个 GUID 两次。与自动递增整数相比,它们具有不可预测、可在数据库之外生成以及在其数据库表上下文之外有意义的优点。http://www.php.net/manual/en/function.uniqid.php#94959 http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid

于 2013-03-17T22:59:14.270 回答
0

有一种使信息唯一的简单方法:在数据库列上创建唯一索引。

然后只需插入您想要的内容并检查数据库是否抱怨违反唯一索引。如果是这种情况,请使用您的替代查询之一并再次检查。

如果最后一个查询仍然不起作用怎么办?

于 2013-03-17T23:59:23.560 回答
0

如果你真的想使用一个随机整数,你可以使用这个MySQL - rand()函数

insert into users (id, ...) values (FLOOR(1000 + RAND() * (9999 – 1000)), ...)
于 2013-03-17T23:03:39.107 回答