我开发了一个将数据发送到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')");
}
?>
答案 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)