Du behøver slet ikke et grimt bind_result med PDO.
Men du behøver heller ikke tælle. Undgå unødvendige handlinger - de svulmer kun op og slører din kode uden grund.
Tænk først, hvad du har brug for fra forespørgslen? Behøver du virkelig at tælle? Nej. Det, du faktisk har brug for, er bare et flag - hvis brugeren eksisterer eller ej. Så lav en forespørgsel for at returnere et sådant flag.
$stmt = $this->pdo->prepare("SELECT 1 FROM users WHERE email=?");
$stmt->execute(array($_POST['email']));
$exists = $stmt->fetchColumn();
Det samme gælder for alle de andre dele af koden
//escape the POST data for added protection
Du "undslipper" faktisk ikke nogen data i denne kodeblok og tilføjer ingen beskyttelse. Alligevel ser jeg absolut ingen mening i at indsætte NULL som e-mail. Er du sikker på, at du virkelig vil have det?