Php 嵌套ifs中的语法错误

Php 嵌套ifs中的语法错误,php,Php,我确信我的代码中有一个简单的语法错误,但我找不到它。这段代码的工作方式是,系统检查用户标识是否存在,是否存在,或者如果字段为空,则会创建错误。如果确定,它将转到下一个字段,即用户名,并执行相同的检查。它们都报告以前是否使用过相应的值,但都不报告字段是否为空 if($userID != ""){ $sql = "SELECT * FROM tbl_access WHERE userID = '$userID'"; $result = mysql_query($sql) or die

我确信我的代码中有一个简单的语法错误,但我找不到它。这段代码的工作方式是,系统检查用户标识是否存在,是否存在,或者如果字段为空,则会创建错误。如果确定,它将转到下一个字段,即用户名,并执行相同的检查。它们都报告以前是否使用过相应的值,但都不报告字段是否为空

if($userID != ""){
    $sql = "SELECT * FROM tbl_access WHERE userID = '$userID'";
    $result = mysql_query($sql) or die(mysql_error());
    $num_rows = mysql_num_rows($result);
        if($num_rows == 0){
            $error = "User ID not found, please enter your user ID";
        }
}
else if($userID == ""){
    $error = "Please enter your User ID";
}
else if($username != ""){
    $sql = "SELECT * FROM tbl_access WHERE userName = '$username'";
    $result = mysql_query($sql) or die(mysql_error());
        if(!empty($result)){
            $error = "Username already in use, please select a different username";
        }
}
else if($username == ""){
    $error = "Please enter a username";
}

当检查用户ID部分时,脚本工作正常,但它完全忽略用户名部分。我确信这一定是我自己的一个简单语法错误,但我已经盯着代码的同一部分看了好几个小时了,所以在编写嵌套的if-else语句以在多个备选方案之间进行选择时,我们将非常感谢您的帮助。请使用一些一致的布局,例如:

if ( condition1 )
statement1 ;
else if ( condition2 )
statement2 ;
. . .
else if ( condition-n )
statement-n ;
else
报表-e;
尝试此……。

如果出现以下情况,请在第三个之前删除else:

if($userID != ""){
    $sql = "SELECT * FROM tbl_access WHERE userID = '$userID'";
    $result = mysql_query($sql) or die(mysql_error());
    $num_rows = mysql_num_rows($result);
        if($num_rows == 0){
            $error = "User ID not found, please enter your user ID";
        }
}
else if($userID == ""){
    $error = "Please enter your User ID";
}
if($username != ""){
    $sql = "SELECT * FROM tbl_access WHERE userName = '$username'";
    $result = mysql_query($sql) or die(mysql_error());
        if(!empty($result)){
            $error = "Username already in use, please select a different username";
        }
}
else if($username == ""){
    $error = "Please enter a username";
}

你试图在一个if语句中做太多的事情。请记住,如果您陷入任何一个if或elseif语句中,那么整个if语句就结束了。你应该把它分解成更小的语句来实现你的期望

if($userID != "")
{
    $sql = "SELECT * FROM tbl_access WHERE userID = '$userID'";
    $result = mysql_query($sql) or die(mysql_error());
    $num_rows = mysql_num_rows($result);

    if($num_rows == 0)
    {
        $error = "User ID not found, please enter your user ID";
    }
}
else
{
    $error = "Please enter your User ID";
}


if($username != "")
{
    $sql = "SELECT * FROM tbl_access WHERE userName = '$username'";
    $result = mysql_query($sql) or die(mysql_error());

    if(!empty($result))
    {
        $error = "Username already in use, please select a different username";
    }
}
else
{
   $error = "Please enter a username";
}
如果你做了类似上述陈述的事情,那么你应该没事。这将验证这两个变量,并在需要时对其中任何一个单独采取措施。通过这样做,您可以进一步缩短时间:

If(is_null($userID) || is_null($username))
{
    //output your error message here
} else
{
    //you know that both are populated, run your queries now
}

您好,谢谢您,但当我这样做时,它完全忽略了userID部分,并转到username部分(据我所知,这意味着userID是正确的;)。如果id是正确的,您希望发生什么?我已经通过将userID留空或输入一个不存在的用户名来测试它,但它完全忽略了它。如果ID丢失或不正确,它应该这样说,如果没有,它应该移动到表单中的下一个字段,并验证您遇到的错误,写一些东西,以便我帮助解决您的问题…嗨,我没有收到错误,它只是忽略了用户名部分我将尝试我认为您的情况没有得到纠正…谢谢,如果我注释掉了userid部分和username部分,我会感谢您的帮助,但是如果我使用它,它会完全忽略关于userid的部分。如果删除userid部分的userid部分,那么使用第二段代码,您可以在else部分同时执行userid和username。if假设用户应该在这些字段中输入一些内容,或者应该填充这些字段。如果其中一个可能为空,则顶部代码可能是处理此问题所需的方式。您是否从另一个表单获取userid。这有点复杂。print\u r($\u POST)->打印任何值。是的,userid来自另一个表,但是,我正在测试的表中有一个userid字段,所以不是这样。问题是它要么检查userid,要么检查username,但两者都不检查。最后,我在if-else之外单独进行了mysql查询,结果成功了。奇怪。。。谢谢你花时间来帮助我思考谢谢你的积极回复。很高兴知道你的问题已经解决了。{如果你喜欢我的帖子,请给我点评。}。祝您有个美好的一天。
If(is_null($userID) || is_null($username))
{
    //output your error message here
} else
{
    //you know that both are populated, run your queries now
}