fetchAll restituisce un array vuoto qualora l'esecuzione della query non produca risultati.
Quindi il controllo che fai non va bene.
O conti gli elementi dell'array oppure fai una query del tipo
e da li il resto....codice:$controllo = $db->prepare("SELECT count(email) as num FROM utente WHERE email = '$email'");