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

しかし、フォームを送信する前に、ユーザーに何も表示せずに、このランダムがデータベースに存在するかどうか、3 番目のケースを使用する場合は 2 番目のケースを使用するかどうかをチェックするケース 1 を作成したいと考えています。

事前にご協力いただきありがとうございます。

4

3 に答える 3

1

車輪を再発明しないでください。SQL データベースには、すべての行に一意の ID を割り当てる優れた方法が 2 つあります。

1) 主キーの自動インクリメント - 新しい行ごとに 1 ずつ増加します。データベースによって管理され、誤って 2 つの行に同じ値を使用しないことが保証されます。小さくてシンプルで素敵。http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

2) GUID (UUID とも呼ばれます) - GUID の生成に使用されるアルゴリズムは、同じものを 2 回目にすることはないことを意味します。自動インクリメント整数よりも、予測不可能であり、データベースの外部で生成可能であり、データベース テーブル コンテキストの外部で意味があるという利点があります。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

情報を一意にする簡単な方法があります。データベース列に一意のインデックスを作成します。

次に、必要なものを挿入し、一意のインデックスに違反しているとデータベースが文句を言うかどうかを確認します。この場合は、代替クエリの 1 つを使用して、もう一度確認してください。

最後のクエリがまだ機能しない場合はどうなりますか?

于 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 に答える