2016-09-12 3 views
0

ユーザ名が2番目の条件ですが、電子メールが機能しない場合は私のユーザ名を使用します。これは私のコードの下にすべての助けをいただければ幸いです。 :)ログイン機能は最初の状態ではなく、2番目の条件を使用します

public function loginUser($usernameEmail,$password){ 

    $query = $this->db->prepare("SELECT * FROM users WHERE email OR username = :usernameEmail"); 

    $query->execute(array(":usernameEmail"=>$usernameEmail)); 

    $rows = $query->fetch(PDO::FETCH_ASSOC); 

    if(password_verify($password, $rows['password'])){ 

     $_SESSION['userID'] = $rows['userID']; 

     $_SESSION['username'] = $rows['username']; 

     $_SESSION['usergroup'] = $rows['usergroup']; 

     return true; 

    } else { 

     return false; 

    } 

} 
+0

無効なMySQL 'WHERE email = ??? OR username = ' – nogad

答えて

0

個々に列をテストし、次にテストをORと組み合わせる必要があります。

WHERE email = :usernameEmail OR username = :usernameEmail 

またIN()を使用することができます。だから、それは空でないemail値と一致した

WHERE (email != FALSE) OR (username = :usernameEmail) 

として

WHERE :usernameEmail IN (email, username) 

あなたのクエリが解析されています。

+0

Wah、あなたのおかげで、私はちょうどその笑を見落とし続けました。 – Jmorin2017

関連する問題