检查电子邮件地址是否已存在,如果是,则显示消息,如果不是,则添加到表中。

4

我希望你能为我提供一些见解。

我有一个表单,收集名字、姓氏、城市、州和电子邮件地址。这个表单使用jquery验证插件和表单插件。

我想检查电子邮件是否已经存在... 如果是,则输出一条消息告诉他们已经存在。

这是我用来更新.php脚本,在这个脚本中,表单用来将名称添加到mysql数据库:

<?php
$con = mysql_connect("host","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("table", $con);

$sql="INSERT INTO wallnames (ID, firstname, lastname, city, state, email)
 VALUES('NULL','$_POST[firstname]','$_POST[lastname]','$_POST[city]','$_POST[state]','$_POST[email]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
 }

 echo "<p style=\width:350px; height:200px; vertical-align:middle;\><strong>Thank you for adding your info</strong></p>";

mysql_close($con);
?>

1
你确定将'NULL'作为字符串插入是你想要做的吗?难道不应该是NULL吗? - Mark Byers
说实话,我对这个东西还有点生疏,只是看了一个例子然后就把它插进去了。它似乎可以正常工作。如果我删除NULL...我会得到一个错误。马克 - 我也不太确定我完全理解如何添加唯一索引。 - TikaL13
如果你想要NULL值,那么应该只是使用NULL而不是'null'这个单词。如果你正在使用MySQL,那么应该有一个按钮可以点击,使一个字段成为唯一索引。如果没有,就按照Mark写的去做。 - ggfan
1
@Matthew:你还应该注意到,你所做的事情容易受到SQL注入攻击。如果这听起来像是太多的工作,我建议你放弃你正在跟随的任何教程/示例网站,而是从可靠的教授良好实践的来源中学习。长远来看,你会节省很多时间。请参阅此线程以获取一些开始的想法:http://stackoverflow.com/questions/2119083/php-tutorial-that-is-security-accuracy-and-maintainability-conscious - Mark Byers
@Mark...谢谢你的见解。我会仔细查看并确保以正确的方式完成这项工作。 - TikaL13
@Mark... 好的,我在我的数据库中为电子邮件列添加了唯一索引。这对我帮助很大... 如果电子邮件是重复的,我会显示一个错误消息。 - TikaL13
1个回答

4

您应该在电子邮件列上创建唯一索引,这样如果您尝试两次插入相同的电子邮件地址,则会失败。

CREATE UNIQUE INDEX ux_wallnames_email ON wallnames (email)

您还可以运行此查询来测试电子邮件是否已经存在:
SELECT EXISTS (SELECT NULL FROM wallnames WHERE email = 'test@example.com')

它将返回0(如果电子邮件未被使用)或1(如果它已经存在于表中)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接