在数据库中插入多个电子邮件(唯一键)行

时间:2012-10-13 10:58:34

标签: php mysql

我想填充具有下一个结构的表:

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字段的问题。

现在想想电子邮件,因为你看到它是一个独特的密钥,所以我考虑放置两个随机数值,一个在@之前,一个在@之后,然后是扩展。

示例:

<?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 

正如您所看到的,这可行,但我的问题是,是否有更智能/更有效的方式。

我认为这可能具有建设性,所以我希望你的回答。见到你。

1 个答案:

答案 0 :(得分: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')

这样,您的测试可以很容易地追溯到特定的用户行。