2017-10-07 9 views
-3

現在、私のコードでは、ユーザ名と電子メール変数が両方とも一意のキーなのでデータベースに存在するかどうかを確認します個別に応答し、異なる応答を出力しますか?PHPのユーザ名または電子メールがデータベースに存在するかどうかを個別に確認する方法

ユーザー名が存在する場合など - >「そのユーザー名は既に存在します」 メールが存在していても、ユーザー名がそうでない場合 - >「そのメールは既に存在します。

<?php 
    include 'include/connection.php'; 

    $username = mysqli_real_escape_string($conn, $_REQUEST['username']); 
    $password = mysqli_real_escape_string($conn, $_REQUEST['password']); 
    $name = mysqli_real_escape_string($conn, $_REQUEST['name']); 
    $email = mysqli_real_escape_string($conn, $_REQUEST['email']); 

    $sql = "INSERT INTO userdata (username, password, name, email) VALUES ('$username', '$password', '$name', '$email')"; 

    if (mysqli_query($conn, $sql)) { 
    echo "Your account was created successfully, please login to continue."; 
    echo '<form action="login.php"> 
      <input type="submit" name="login" id="login" value="Login" /> 
      </form>'; 
    } else { 
    echo "That username already exists, please try again."; 
    echo '<form action="registration.php"> 
      <input type="submit" name="register" id="register" value="Register" /> 
      </form>'; 
    } 
?> 
+1

は、ここでは完全な説明をクリックhttps://stackoverflow.com/questions/33129791/check-if-already-a-user-then-insert-into-the-database-php –

+0

@Kheteshkumawatあるので、Iデータベースに挿入しようとする前にユーザー名または電子メールが存在するかどうかを確認する必要がありますか? – ChaCol

+0

私は完全な説明へのリンクにこのコメントをコメントしています。 –

答えて

1

機能を持つことの可能な方法の一つとemailusernameの両方をチェックするためにSQLを記述します。

SELECT username, email from userdata where username = ? OR email = ? 

そして、結果セットをループしemail又はusernameが存在するかどうかをチェックし、それに応じてエラーメッセージを返します。

0

あなたはその上で、あなたの小切手を適用することができ、カウントを取得する場合、この

$checkUserNameSql = "Select Count(username) as username from userdata WHERE username = '".$username."'"; 

$result=mysql_query($checkUserNameSql); 
$data=mysql_fetch_assoc($result); 

echo $data['username']; 

を試してみてください。

+0

'$ result_username = mysqli_query($ CONN、 "ユーザデータWHEREユーザー名= $ユーザ名からユーザー名を選択");' '$ username_count = mysqli_num_rows($のresult_username);' '}他($ username_count == 1)であれば{'私はこれを試しましたが、「mysqli_num_rows()はパラメータ1がmysqli_resultになると期待しています」 – ChaCol

+0

SELECTクエリが悪いです。 ''ユーザー名からユーザー名を選択してください。どこのユーザー名= '。$ username' '" –

+0

これを修正しましたが、今はelse if文を完全に無視しています。もしユーザー名が存在すれば、私の '}に行くのではなく、私のelseステートメントにスキップします。else if($ count_username == 1){' – ChaCol

-1

以下のコードで使用します。まずユーザー名と電子メールを確認してからレコードを挿入する必要があります。ここで

include 'include/connection.php'; 
$username = mysqli_real_escape_string($conn, $_REQUEST['username']); 
    $password = mysqli_real_escape_string($conn, $_REQUEST['password']); 
    $name = mysqli_real_escape_string($conn, $_REQUEST['name']); 
    $email = mysqli_real_escape_string($conn, $_REQUEST['email']); 

    $checkUser = 'select email ,username from userdata where email="'.$email.'" or username = "'.$username.'"'; 
    $result  = mysqli_query($conn,$checkUser); 
    $row   = mysqli_fetch_assoc($result); 
    if(!empty($row)){ 
    if($row['email']==$email){ 
     echo "That email already exists. Please try again"; 
    } 
    else if($row['username']==$username){ 
     echo "That username already exists. Please try again"; 
    } 

    echo '<form action="registration.php"> 
     <input type="submit" name="register" id="register" value="Register" /> 
     </form>'; 
    } 
    else{ 

    $sql = "INSERT INTO userdata (username, password, name, email) VALUES ('$username', '$password', '$name', '$email')"; 
    if (mysqli_query($conn, $sql)) { 
    echo "Your account was created successfully, please login to continue."; 
    echo '<form action="login.php"> 
      <input type="submit" name="login" id="login" value="Login" /> 
      </form>'; 
    } 
    } 
+0

ダウン有権者は、このコードで何が間違っているかを説明しますか? – sheraz

関連する問題