1

我确定我的代码中有一个简单的语法错误,但我找不到它。这部分代码的工作方式是系统检查用户ID 是否存在,是否存在,或者如果该字段为空,则会产生错误。如果没问题,它会转到下一个字段 userName 并执行相同的检查。他们都报告了相应的值是否以前被使用过,但他们都没有报告该字段是否为空。

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 部分时工作正常,但它完全忽略了用户名部分。我确信这一定是我的一个简单的语法错误,但我已经盯着同一部分代码好几个小时了,所以任何帮助都将不胜感激

4

3 回答 3

1

在编写嵌套 if-else 语句以在多个备选方案之间进行选择时,请使用一些一致的布局,例如:

if ( condition1 )
statement1 ;
else if ( condition2 )
statement2 ;
. . .
else if ( condition-n )
statement-n ;
else

声明-e;

if($userID != ""){
        statements
       if($num_rows == 0){
            $error = "User ID not found, please enter your user ID";
        }
}
else($userID == ""){
    $error = "Please enter your User ID";
}
 if($username != ""){
           statements
           if(!empty($result)){
            $error = "Username already in use, please select a different username";
        }
}
else($username == ""){
    $error = "Please enter a username";
}

试试这个 ........

于 2012-11-22T12:38:28.470 回答
1

您试图在一个 if 语句中做太多事情。请记住,如果您陷入 if 或 else if 语句中的任何一个,那么整个 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
}
于 2012-11-22T12:55:07.777 回答
0

删除第三个 if 之前的 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";
}
于 2012-11-22T12:39:11.117 回答