如何防止sql中的重复数据

时间:2013-12-26 23:38:41

标签: php sql forms

我开发了一个将数据发送到sql数据库的电子邮件表单。但是,我注意到可能存在重复的电子邮件。有什么东西我可以添加到我的PHP或SQL以防止重复的电子邮件?

<?php

if (isset($_POST['submit']) && strlen($_POST['email'])>0 && strlen($_POST['city'])>0)
{
    $good_input = true;
    $email=$_POST['email']; 
    $city=$_POST['city'];  
    mysql_connect("host", "username", "password") or die(mysql_error()); 
    mysql_select_db("database") or die(mysql_error());
    mysql_query("INSERT INTO `launchpage` VALUES ('$email', '$city')"); 

}


?> 

3 个答案:

答案 0 :(得分:1)

您可以将电子邮件作为表格的主键:

ALTER TABLE launchpage ADD PRIMARY KEY(email);

然后使用REPLACE INTO代替INSERT INTO

mysql_query("REPLACE INTO `launchpage` VALUES ('$email', '$city')"); 

如果密钥存在,则REPLACE更新现有记录,否则插入新记录。好处是SQL查询不会像尝试插入UNIQUE索引时那样失败。

在制作主键电子邮件之前,您需要删除重复项。请参阅此帖子:Delete Duplicate email addresses from Table in MYSQL

答案 1 :(得分:0)

您可以尝试:

ALTER TABLE launchpage ADD UNIQUE (email);

答案 2 :(得分:0)

是的,在表格的电子邮件列中添加UNIQUE约束。

ALTER TABLE launchpage
ADD CONSTRAINT UNIQUE INDEX unique_email (email)