0

我是 PHP 和 Mysql 的新手,由于某种原因,它只检查语句 if($email == $result2 ) 输入是用户名还是电子邮件。我不知道为什么?有人可以从逻辑上解释它吗,我被困了几个小时才弄清楚。:( 谢谢 请客气。

<?php 
session_start();
include_once("connect.php");

$email = $_POST['email'];
$username = $_POST['username'];
//echo $_POST['email'];



if(isset($_POST['email']) )
{
$extract= mysql_query("SELECT username, email FROM users");
$resultq = mysql_num_rows($extract);
while($row= mysql_fetch_array($extract))
{

    $result = $row['username'];
    $result2 = $row['email'];


    //$pass = $_POST['pass'];

    if($email == $result2 ) 
    { //check if there is already an entry for that username
        echo "Email Address is already used!";
        exit(); //break;
    }
    if ($username == $result )
    {
        echo " Username is already Taken!";
            //mysql_query("INSERT INTO users (Username, Password) VALUES ('$user', '$pass')");
            //header("location:index.php");
        exit(); //break;
    }
    else
    {

    }
}

}

4

6 回答 6

4

它的行为与所写的一样。如果任if()一测试成功,您将告诉脚本exit().

删除 exit() 调用...

您还真的需要了解WHERE查询中的子句。您正在遍历整个用户表并一次比较一个记录。这相当于开车去杂货店,买完整个商店的存货,开车回家……然后把它们全部扔进垃圾箱,因为你真正想要的只是一根糖果棒。

于 2013-08-23T21:15:23.667 回答
0

将此行更改为以下行:

 $extract= mysql_query("SELECT username, email FROM users");

然后使用 where 子句,如下所示:

$extract= mysql_query("SELECT username, email FROM users where username='$username' and email='$email'");
于 2013-08-23T21:31:51.873 回答
0

我认为你最好在你的电子邮件和用户名栏中使用唯一的,然后你不需要再检查它了,mysql会为你做的!

于 2013-08-23T21:14:51.210 回答
0

伙计们,我从结合您的一些评论中猜到了答案。出于某种原因,我需要将 isset($_POST['username']) 与 isset($_POST['email']) 一起包括在内,以便我的 if 语句全部执行......也许是 isset 检查是否存在是用户名的值。

于 2013-08-23T21:27:01.447 回答
0

尝试这个

  if($email == $result2 ) 
{ //check if there is already an entry for that username
    echo "Email Address is already used!";
    //---------removed that line
}
else if ($username == $result )   //add else if instead of if
{
    echo " Username is already Taken!";
        //mysql_query("INSERT INTO users (Username, Password) VALUES ('$user', '$pass')");
        //header("location:index.php");
    //----------removed that line
}
else
{

}

编辑:

改变这个

    if(isset($_POST['email']) )

 if(isset($_POST['email']) or isset($_POST['username']))

这是为了检查他们俩。您正在检查电子邮件,这就是为什么您没有收到第二个如果。

于 2013-08-23T21:16:39.753 回答
0

在您注释掉第一个 if ($username == $result )) 之后,它是否进入第二个 if 语句( if ($username == $result ) )?

如果是这样,那么它会一直点击那个 exit() 函数。

于 2013-08-23T21:17:27.077 回答