0

次の構造を持つテーブルにデータを入力したい:

USERS_TABLE
ID_USR (Primary_Key, AUTO_INCREMENT)
USERNAME (Not Null)
EMAIL (Not Null, Unique Key)
Password(Not Null)
Nacionality (Not Null)
Work (Null)

そして、phpスクリプトでそれをやりたいです。スクリプトを作成することは問題ありませんが、メールのフィールドに疑問があります。本当の名前や電子メールは必要ありません。データと 10 ~ 100 行を超える可能性だけが必要です。

したがって、ID_USR では、自動インクリメント値であるため問題はありません。null 以外または null のフィールドに問題はありません。

ここでメールについて考えてみましょう。ご覧のように一意のキーなので、@ の前後に 1 つずつ、2 つのランダムな数値を入れて、拡張子を付けることを考えました。

例:

<?php 
for ($i = 0; $i < 10; $i++)
{
$a = rand();
$b = rand(); // array("gmail", "facebook", "hotmail", "outlook", "yahoo".....);
$extension = array(".com", ".es", ".net", ".org"); // ....
$c = rand(0,3);
$email = $a."@".$b."".$extension[$c];
echo "$email";
}
?>

それは私に戻ります:

2095518299@699790428.com 
254450939@1623171070.org 
1142680888@2074501004.org 
1940419404@1779299580.es 
726585010@1262850036.net 
578544275@145818927.net 
2067281904@1894405902.org 
275443932@1915863743.es 
734209458@1269004984.com 
1035465063@1828742272.net 

ご覧のとおり、これは機能しますが、私の質問は、よりスマートで効率的な方法があるかどうかです。

これは建設的なものかもしれないと思うので、あなたの答えを願っています。またね。

4

1 に答える 1

2

ああ、テストデータの問題!

私があなただったら、メールアドレスのドメイン部分にあなたが管理しているドメイン名を使用します。あれは、

  726585010@emailtest.yoyodyne.com 
  578544275@emailtest.yoyodyne.com 
  2067281904@emailtest.yoyodyne.com

(Yoyodyneで働いている場合。)これにより、エラーが発生して全員に送信しようとした場合に、ランダムに生成された電子メールアドレスが暴走するのを防ぐことができます。

次に、偶発的な衝突が多く発生しないように、より長い乱数を使用します。あなたはおそらくいくつかを得るでしょう。

最後に、テーブルにデータを入力した後、テーブルを使用する前に、戻って電子メール列を変更し、ID番号が組み込まれるようにします。

 UPDATE USERS_TABLE SET EMAIL = CONCAT(ID_USR,'@emailtest.yoyodyne.com')

そうすれば、テストを特定のユーザー行まで簡単に追跡できます。

于 2012-10-13T11:31:08.877 に答える