检查是否正在使用电子邮件的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 &#9658;" 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)