【问题标题】:Check if Random Exist in the database before inserting插入前检查数据库中是否存在随机数
【发布时间】:2013-03-17 22:52:44
【问题描述】:

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

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

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

提前感谢您的帮助。

【问题讨论】:

标签: php jquery mysql ajax json


【解决方案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#94959http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid

【讨论】:

    【解决方案2】:

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

    insert into users (id, ...) values (FLOOR(1000 + RAND() * (9999 – 1000)), ...)
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-09-22
        • 1970-01-01
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多