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

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";
}

上記のようなことをすればOKです。これにより、両方の変数が検証され、必要に応じていずれかの変数に対して個別にアクションが実行されます。これを行うことで、これをさらに短縮できます。

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 に答える
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 に答える
0

次の場合は、3 番目の前の 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 に答える