I am trying to allow users to edit their email address in my PHP system but also prevent them from setting one that already exist, I am also trying run them through FILTER_VALIDATE_EMAIL. However it stops somewhere for me. The checks works fine in same function, but updating the the new one if the checks that I tried to setup are passed doesn't work. I am using a HTML form for updating them. I thought I did it right, I read here check if email exists in MySQL database that it should be possible to do it this way.
Here's my code, does anyone see what I am doing wrong? Where am I missing out?
function EmailCheck($sql) {
if (isset($_POST['email'])) {
    $newemail = $_POST["email"];
    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        echo "Invalid e-mail, please try a different.";
        exit;
    }
    $check_email = $sql->query("SELECT email FROM auth WHERE email='$newemail'");
    if ($check_email-> num_rows) {
        echo "E-mail is already in use.";
        exit;
    }
} 
else {
   mysqli_query($sql, "UPDATE auth SET email='$newemail' WHERE username = '$this->username'");
   header("Location: userinfo.php");
   exit;
 }
}
 
     
    