2016-04-05 6 views
-2

私はこのコードでデータベースからのメールの可用性を確認していますが、メールではなくユーザー名でしかチェックしていません。私は電子メールとユーザー名の両方をチェックしたい、私は下のコードを介してそれらをチェックしようとしたが、それdoesnt仕事。ユーザ名ではなくメールのみを確認しています

コードに問題がありますか?

<?php 
require_once './config.php'; 
if (isset($_POST["sub"])) { 
    $fname = ($_POST["fname"]); 
    $lname = ($_POST["lname"]); 
    $name = ($_POST["username"]); 
    $pass = ($_POST["password"]); 
    $email = ($_POST["email"]); 
    $sql = "SELECT COUNT(*) AS count from users where email = :email_id and username = :username_id "; 
    try { 
     $stmt = $DB->prepare($sql); 
     $stmt->bindValue(":email_id", $email); 
     $stmt->bindValue(":username_id", $name); 
     $stmt->execute(); 
     $result = $stmt->fetchAll(); 
     if ($result[0]["count"] > 0) { 
      echo "<div style='color:red;' class='errorbox'>Incorrect Username or Password</div><br>"; 
     } else { 
      $sql = "INSERT INTO `users` (`username`, `password`, `email`, `firstname`, `lastname`) VALUES " . "(:name, :pass, :email, :fname, :lname)"; 
     } 
    } 
} 
?> 
+0

エラー出力? – Tomasz

+0

@TomaszTurkowski電子メールはチェックしてもユーザ名は表示されませんエラー出力はありません –

+0

データベースの 'username'値と' $ name'変数ではなく '$ email'変数とを比較していますか? –

答えて

0
あなたが使用している

と条件:

$stmt->bindValue(":username_id", $email); 

を置き換える必要があります。あなたが使用しているか状態が良いことを意味します。

$sql = "SELECT COUNT(*) AS count from users where email = :email_id or username = :username_id "; 
+0

Oooppsss同じ時間私を削除する... :) –

+0

ああ!!!!申し訳ありませんyaar! – sujivasagam

+0

それは@sujivasagam :) –

0

入力ミス。この行を交換する必要があります。

$stmt->bindValue(":username_id", $name); 
+0

電子メールのチェックのみが動作していません –

+0

SQLクエリの 'と'を 'または'に置き換えたい場合があります –

0

たぶん、あなたはここでエラーを持っている:

$stmt->bindValue(":email_id", $email); //ok 
$stmt->bindValue(":username_id", $email); //you bind with $email again .. is it normal ? 

You should validate your $_POST datas with !empty i.e.: 
if(!empty($_POST["email"]) $email = $_POST["email"]) ... because with your actual code you could make sql queries with empty $email = null 
2

あなたのSQLステートメントを使用して問題を持っている、あなたは、電子メールとユーザー名の両方が一緒に

$sql = "SELECT COUNT(*) AS count from users where email = :email_id and username = :username_id " 
からあなたの文を変更してみていることを確認しています

~

$sql = "SELECT COUNT(*) AS count from users where email = :email_id or username = :username_id " 

ユーザ名または電子メールのいずれかがユニークでないことが判明した場合は必ず1を返します。

関連する問題