आपके चर जैसे $fname $lname $gender $age $email $course
isset($_POST['register'])
के लिए if कंडीशन के बाद if कंडीशन में डाल दिया जाता है . अब भले ही आपका वेलिडेशन काम कर जाए, फिर भी डेटा डेटाबेस में एंटर किया जाएगा। क्योंकि आपने शर्त रखी है
if($fname&&$lname&&$gender&&$age&&$email&&$course)
अब नियंत्रण उस ब्लॉक में प्रवेश करेगा जब आपके पास उन सभी चर में एक भी मान होगा। क्या हो रहा होगा, कि आप गलत मान डालते हैं, वे मान्य हो रहे हैं, संदेश दिखाया जाएगा, लेकिन जब ब्लॉक समाप्त होता है, तो $_POST चर के रूप में अभी भी कुछ मूल्य हैं, भले ही वे अमान्य हों, दूसरा यदि ब्लॉक दर्ज किया जाएगा और क्वेरी निकाल दी जाएगी।
आप क्या कर सकते हैं, जहां भी आप त्रुटि संदेश गूँज रहे हैं, उस संबंधित चर को खाली कर दें। कुछ इस तरह:
if (preg_match("/[a-zA-Z ]+$/", $_POST['fname'])) {
$fname = trim($_POST['fname']);
}
else
{
echo '<p>The First name is empty or has illegal characters! To edit please go the link Display Data Information</p>';
$fname = "";
}