Du behöver inte alls ett fult bind_result med PDO.
Men du behöver inte räkna heller. Undvik onödiga åtgärder - de sväller bara upp och fördunklar din kod utan anledning.
Tänk först, vad du behöver från frågan? Behöver du verkligen räkna? Nej. Vad du egentligen behöver är bara en flagga - om det finns en användare eller inte. Så gör en fråga för att returnera en sådan flagga.
$stmt = $this->pdo->prepare("SELECT 1 FROM users WHERE email=?");
$stmt->execute(array($_POST['email']));
$exists = $stmt->fetchColumn();
Detsamma gäller för alla andra delar av koden
//escape the POST data for added protection
Du "flykter" faktiskt inte någon data i detta kodblock och lägger inte till något skydd. Ändå ser jag absolut ingen mening med att infoga NULL som e-post. Är du säker på att du verkligen vill ha det?