0

ユーザー データベースに、登録時に生成される 6 桁の数字フィールドがあります。私mt_rand(100000, 999999)は数字を生成するために使用します。

ここで質問がありますが、誰も同じ番号を取得しないようにするために、PHP コードの代わりにフィールドを UNIQUE にする必要があります (これが最善だと思います)。たぶん、私が知らない他の方法があります。問題は、これを行うための最良の方法は何ですか?

4

3 に答える 3

2

この方法は、PHP を使用して行うことができます。

まずuniqueフィールドに制約を与えます。

if (mysqli_errno() == 2027)
    mysqli_query("INSERT INTO ... {mt_rand()}");

そのため、重複する値を挿入すると、重複しているというエラー コードが表示されます2027。クエリを再送信できます。

于 2012-11-13T15:44:03.533 に答える
0

なぜあなたはしないのですか

  • ネストされた選択を使用して max(user_id) を取得し、それを増やして、その値を新しいユーザーに使用しますか?
  • 現在のユーザーIDとフェッチのみを保持するテーブルを作成し、その値を増やして使用して新しいユーザーを作成しますか?
  • AUTO_INCREMENT 列を使用しますか?
于 2012-11-13T15:46:59.503 に答える
0

カラムを使用しAUTO_INCREMENTます。

生成された番号が既に存在するかどうかを確認するためにクエリを実行することは悪い解決策であり、より多くの番号が使用されるため、登録されたユーザーが増えると悪化します。したがって、常に有効な番号を生成するために、すべての生成された番号を追跡する必要があります。

AUTO_INCREMENT列の場合、これは「自動的に」発生します。

于 2012-11-13T15:48:14.897 に答える