PDOでの醜いbind_resultはまったく必要ありません。
しかし、あなたも数える必要はありません。不必要なアクションは避けてください。理由もなく、コードが肥大化して難読化するだけです。
まず、クエリから何が必要かを考えてください。あなたは本当に数える必要がありますか?いいえ。実際に必要なのはフラグだけです-ユーザーが存在するかどうか。したがって、そのようなフラグを返すクエリを作成します。
$stmt = $this->pdo->prepare("SELECT 1 FROM users WHERE email=?");
$stmt->execute(array($_POST['email']));
$exists = $stmt->fetchColumn();
コードの他のすべての部分についても同じことが言えます
//escape the POST data for added protection
このコードブロック内のデータを実際に「エスケープ」したり、保護を追加したりすることはありません。それでも、電子メールとしてNULLを挿入してもまったく意味がありません。本当に欲しいですか?