我有一个简单的形式:
<fieldset id="membershipform">
<ul class="clearfix">
<li id="li-status">
<span>I am a:</span>
<menu>
<li><label for="student"><input disabled="disabled" type="radio" name="r1" id="student" checked="checked" /> Graduate</label></li>
<li><label for="student2"><input disabled="disabled" type="radio" name="r1" id="student2" /> Undergraduate</label></li>
</menu>
</li>
<li id="li-firstname">
<label for="firstname">First Name</label> <input disabled="disabled" type="text" placeholder="First Name" id="firstname" title="First Name" />
</li>
<li id="li-lastname">
<label for="lastname">Last Name</label> <input disabled="disabled" type="text" placeholder="Last Name" id="lastname" title="Last Name" />
</li>
<li id="li-email">
<label for="email">Email address</label> <input disabled="disabled" type="text" placeholder="Email address" id="email" title="Email address" />
</li>
<li id="li-buttons">
<input type="submit" value="Send Application ►" title="Send Application" />
</li>
</ui>
</fieldset>
我想要做的是将表单的内容发布到我的数据库中的表中,但如果电子邮件地址仅存在于数据库中,我希望它发出错误,说“已经在使用电子邮件”以防止来自申请的同一用户。
由于
编辑:澄清我的问题,正如一些人在下面评论说他们不确定我在问什么。我正在寻找一些示例,说明如何检查正在发布的表中的电子邮件地址是否已经存在,因此会引发错误。希望有道理。再次感谢。
答案 0 :(得分:3)
你可以这样做:
function email_exists($email)
{
$sql = mysql_db_query("SELECT email FROM table WHERE email = '" . $email . "'");
return(mysql_num_rows($sql)>0);
}
if(!email_exists($_GET['email'))
{
// insert database code here
}
答案 1 :(得分:2)
一般来说,这里有两个简单的选择。第一种是使用SELECT对数据库进行简单检查,以查看返回的结果数量。如果&gt; = 1,则电子邮件退出。另一种选择是在数据库中抛出一个请求,因为它可以更容易地发出单个请求并读取茶叶而不是多次执行请求,尽管在尝试插入新行之前会选择查看电子邮件是否存在
无论如何,您要做的是在MySQL数据库的电子邮件列中创建唯一索引。这应该照顾它 - 它会在执行任何SELECT
时加快您对电子邮件的搜索,并且会导致任何重复的INSERT
失败。因为尝试插入重复电子邮件地址的任何查询都将失败,您可以监视PHP端的这些故障并假设在正确的数据返回时存在电子邮件。
这是MySQL CREATE INDEX
命令的a link。它应该像运行这样的命令一样简单:CREATE UNIQUE INDEX email_index ON email
;