检查是否正在使用电子邮件的PHP表单
我有这样一个简单的表格:检查是否正在使用电子邮件的PHP表单,php,Php,我有这样一个简单的表格: <fieldset id="membershipform"> <ul class="clearfix"> <li id="li-status"> <span>I am a:</span>
<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>
-
我是一个:
- 毕业
- 本科生
-
名字
-
姓
-
电子邮件地址
-
我想做的是将表单的内容发布到我数据库中的一个表中,但是如果电子邮件地址只存在于数据库中,我希望它抛出一个错误,说“电子邮件已在使用”,以防止同一用户应用
谢谢
编辑:澄清我的问题是什么,因为一些人在下面评论说他们不确定我在问什么。我正在寻找一些示例,说明如何检查表中正在发布到的电子邮件地址是否不存在,从而引发错误。希望这是有道理的。再次感谢。您可以这样做:
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
}
你可以这样做:
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
}
一般来说,这里有两个简单的选择。第一种方法是使用SELECT对数据库进行简单检查,以查看返回了多少结果。如果大于等于1,则电子邮件将退出。另一种选择是只向数据库抛出一个请求,因为在尝试插入新行之前,发出一个请求并读取茶叶要比执行多个请求更容易,尽管选择很小,以查看电子邮件是否存在 在任何情况下,您都需要在MySQL数据库的电子邮件列上创建一个唯一的索引。这两种方法都应该考虑到这一点——在执行任何
SELECT
s操作时,它都会加快您对电子邮件的搜索速度,并会导致任何重复的INSERT
s操作失败。因为任何试图插入重复电子邮件地址的查询都会失败,所以您可以在PHP端监视这些失败,并假设在正确的数据返回时存在电子邮件
下面是MySQL
createindex
命令。它应该像运行这样的命令一样简单:createunique INDEX email\u INDEX ON email
一般来说,这里有两个简单的选择。第一种方法是使用SELECT对数据库进行简单检查,以查看返回了多少结果。如果大于等于1,则电子邮件将退出。另一种选择是只向数据库抛出一个请求,因为在尝试插入新行之前,发出一个请求并读取茶叶要比执行多个请求更容易,尽管选择很小,以查看电子邮件是否存在
在任何情况下,您都需要在MySQL数据库的电子邮件列上创建一个唯一的索引。这两种方法都应该考虑到这一点——在执行任何SELECT
s操作时,它都会加快您对电子邮件的搜索速度,并会导致任何重复的INSERT
s操作失败。因为任何试图插入重复电子邮件地址的查询都会失败,所以您可以在PHP端监视这些失败,并假设在正确的数据返回时存在电子邮件
下面是MySQL
createindex
命令。它应该像运行这样的命令一样简单:createunique INDEX email\u INDEX ON email
你试过什么了?如果您可以向数据库中添加数据,当然也可以检索数据。您是在找教您PHP基础知识的人,还是只想免费获取代码?“选择id from DB where email=*email*”,它返回一行,您知道它存在。@Pekka,这个问题当然很清楚,即使不是用问题来表达的@菲利克斯,如果他知道怎么做,他可能不会发帖了,是吗@里克,如果你不想回答这个有效的问题,那就继续。@Brad我一点也不清楚。他正在展示一个表单,但询问数据库和脚本。目前还没有关于他正在使用哪个数据库包装器的信息。你试过什么了?如果您可以向数据库中添加数据,当然也可以检索数据。您是在找教您PHP基础知识的人,还是只想免费获取代码?“选择id from DB where email=*email*”,它返回一行,您知道它存在。@Pekka,这个问题当然很清楚,即使不是用问题来表达的@菲利克斯,如果他知道怎么做,他可能不会发帖了,是吗@里克,如果你不想回答这个有效的问题,那就继续。@Brad我一点也不清楚。他正在展示一个表单,但询问数据库和脚本。目前还没有关于他正在使用哪个数据库包装器的信息。HDon不能简单地返回行数。返回布尔值以避免潜在的不明确行为。将您的返回更改为return(mysql\u num\u rows($sql)>0)代码>不要简单地返回行数。返回布尔值以避免潜在的不明确行为。将您的返回更改为return(mysql\u num\u rows($sql)>0)代码>