El parámetro de inicio de sesión es el mismo para el correo electrónico y el nombre de usuario. No es exactamente incorrecto si tiene un único cuadro de inicio de sesión que acepta cualquiera de los dos.
Puede poner la condición en la consulta misma si no está seguro de si es un correo electrónico o un nombre de usuario.
$login=$_REQUEST['login'];
$query = "select * from user_db where ( username='$login' OR email = '$login') and password='$password'"
Editar: Hoy en día se prefiere mucho más una solución similar a PDO, ya que lo anterior está sujeto a la inyección de SQL. La lógica sigue siendo la misma, pero debería verse así:
$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();