在插入之前检查数据库中是否存在随机存在

时间:2013-03-17 22:52:45

标签: php jquery mysql ajax json

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

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

所以我有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,检查数据库中是否存在此随机数,如果它确实使用第二种情况,如果它确实使用第三种情况,则在提交表单之前并且不为用户显示任何内容。

提前感谢您的帮助。

3 个答案:

答案 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)

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

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

如果上一个查询仍无效,该怎么办?