Il parametro di accesso è lo stesso sia per l'e-mail che per il nome utente. Non esattamente errato se hai una singola casella di accesso che accetta entrambi.
Puoi inserire la condizione nella query stessa se non sei sicuro che si tratti di un'e-mail o di un nome utente.
$login=$_REQUEST['login'];
$query = "select * from user_db where ( username='$login' OR email = '$login') and password='$password'"
Modifica: Una soluzione simile a PDO è molto più preferita al giorno d'oggi poiché quanto sopra è soggetto a SQL injection. La logica rimane la stessa, ma avresti un aspetto simile a questo:
$query = "
SET @username = :username
SELECT * FROM user_db
WHERE ( username = @username OR email = @username)
AND password = :password
";
$statement = $pdoObject->prepare($query);
$statement->bindValue(":username", $login, PDO::PARAM_STR);
$statement->bindValue(":password", $password, PDO::PARAM_STR);
$statement->execute();