आपको पीडीओ के साथ बदसूरत 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 को ईमेल के रूप में डालने का कोई मतलब नहीं दिखता। क्या आप वाकई इसे चाहते हैं?