-2

これは私のコードです:

    if ($username == "" || $pass == "" || $emailad==""|| $fname=="")
{  
    $msg = "Not all fields were entered"; 
}else
{
    if(uniqueUser($username,$emailad))
    {
        $msg="The username or email already exists";
    }else
    { 
        insertIntoDB($fname,$emailad,$username,$pass);
        $msg="The user has been inserted";

    }

}
    echo $msg;

これは、データベースに新しいユーザーを挿入するために使用されます。ただし、私の問題は、存在しないユーザーを追加する場合、プログラムはユーザー名が既に存在することを通知しますが、データベースにない場合は新しいアカウントを挿入します。したがって、プログラムは、ユーザーがデータベースに存在するかどうかに応じて、挿入に関して正常に機能します。このコードをどのように書き直しても、存在しないユーザーを挿入すると間違ったメッセージが表示されるため、ユーザーが既にデータベースに存在するかどうかがわからないため、問題はメッセージ表示です。これは、コードが if ステートメントを実行し、新しいユーザーを挿入し、再度実行して、既に存在するというメッセージを表示するためです。なぜこれが起こるのか誰か説明できますか?

独自のユーザー機能:

function uniqueUser($usern,$eml)
{
$query = "SELECT S.username,S.email FROM tbl_user S WHERE S.username='$usern' OR        S.email='$eml'";
return mysql_num_rows(queryMysql($query));
}
4

3 に答える 3

1

これを試して

if ($username == "" || $pass == "" || $emailad==""|| $fname=="")
{  
    $msg = "Not all fields were entered"; 
}
else if(uniqueUser($username,$emailad))
{
    $msg="The username or email already exists";
}
else
{ 
    insertIntoDB($fname,$emailad,$username,$pass);
    $msg="The user has been inserted";
}
echo $msg;
于 2012-04-12T13:27:44.270 に答える
1

おそらく、メッセージをエコーし​​たいですか?ステートメントののecho前に追加します。$msgif

if(uniqueUser($username,$emailad))
{
    echo $msg="The username or email already exists";
}else
{ 
    insertIntoDB($fname,$emailad,$username,$pass);
    $msg="The user has been inserted";
    echo $msg;
}

ユーザーが存在する場合、「ユーザー名または電子メールは既に存在します」というメッセージが出力されます。ユーザーが存在しない場合は挿入され、「ユーザーが挿入されました」というメッセージが出力されます。

于 2012-04-12T13:16:32.903 に答える
0

私が提案できるアルゴリズムは次のとおりです。

  1. フィールドが空かどうかを確認する
  2. ユーザーがデータベースに既に存在するかどうかを確認します (この場合、電子メール フィールドやユーザー名フィールドなど、特定のフィールドのベースを選択する必要があります。
  3. 成功。ユーザーが存在しない場合は、データベースにデータを挿入します。

コードは次のとおりです。

    <?php

/**
 * @author MESMERiZE
 * @copyright 2012
 */

if (empty($username) || empty($pass) || empty($pass) || empty($fname))
{  
        $msg = "Not all fields were entered"; 
}else
{
    // FALSE if exists TRUE if doesnt exist
    if(uniqueUser($username,$emailad) == FALSE)
    {
        $msg="The username or email already exists";

    }else
    { 
        insertIntoDB($fname,$emailad,$username,$pass);
        $msg="The user has been inserted";
        echo $msg;
    }

}

?>

uniqueUser 関数を次のように編集します。

function userExists($usern, $eml)
{
    $query = 'SELECT * FROM tbl_user S WHERE S.username="' . $usern .
        '" OR S.email="' . $eml . '"';
    $q = mysql_query($query);
    if (mysql_num_rows($q) > 0) {
        return false;
    } else {
        return true;
    }
}
于 2012-04-12T13:23:36.983 に答える