我不知道这个代码SQL有什么问题

时间:2013-08-23 21:10:31

标签: php mysql

我是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
    {

    }
}

}

6 个答案:

答案 0 :(得分:4)

它的行为与书面形式相同。如果if()测试成功,则告诉脚本exit()

删除exit()调用...

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

答案 1 :(得分:0)

我认为你最好在你的电子邮件和用户名栏中使用unique,然后你就不用再检查了,mysql会为你做这个!

答案 2 :(得分: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']))

这要检查他们两个。你正在检查电子邮件,这就是为什么你没有得到第二个if。

答案 3 :(得分:0)

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

如果是这样,那么它会一直按下exit()函数。

答案 4 :(得分:0)

伙计们,我有点想到你的一些评论的答案。由于某种原因,我需要包括isset($ _ POST ['username'])以及isset($ _ POST ['email']),以便我的if语句全部执行...也许是isset检查是否存在是用户名的值。

答案 5 :(得分:0)

将此行更改为以下行:

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

然后使用where子句如下:

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