我制作了一个生成不同类型代码的小代码,但我会更简单,
我在提交时提交了一份注册表格,我收集了一些关于用户的信息,我为他创建了一个随机的,但我希望这个随机对于这个用户来说是唯一的。
所以我有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,检查数据库中是否存在此随机数,如果它确实使用第二种情况,如果它确实使用第三种情况,则在提交表单之前并且不为用户显示任何内容。
提前感谢您的帮助。
答案 0 :(得分:1)
不要重新发明轮子 - SQL数据库有两种很好的方法可以为每一行分配唯一的ID。
1)自动递增主键 - 每个新行上升一个。由数据库管理,保证不会错误地对两行使用相同的值。很好,小而简单。 http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
2)GUID(也称为UUID) - 用于生成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
答案 1 :(得分:0)
如果您真的想使用随机整数,可以使用MySQL - rand()
函数来实现此
insert into users (id, ...) values (FLOOR(1000 + RAND() * (9999 – 1000)), ...)
答案 2 :(得分:0)
有一种使信息唯一的简单方法:在数据库列上创建唯一索引。
然后只需插入您想要的内容并检查数据库是否抱怨违反唯一索引。如果是这种情况,请使用其中一个替代查询并再次检查。
如果上一个查询仍无效,该怎么办?