vaše proměnné jako $fname $lname $gender $age $email $course
jsou vloženy do if podmínka za if podmínka pro isset($_POST['register'])
. Nyní, i když vaše ověření bude fungovat, data budou stále vložena do databáze. protože jste zadali podmínku
if($fname&&$lname&&$gender&&$age&&$email&&$course)
Nyní kontrola vstoupí do tohoto bloku, když budete mít ve všech těchto proměnných byť jen jedinou hodnotu. Musí se stát, že jste zadali nesprávné hodnoty, ty se ověřují, zobrazí se zpráva, ale když nejprve blok skončí, protože proměnné $_POST stále mají NĚJAKOU hodnotu, bez ohledu na to, že jsou neplatné, poté, pokud bude vložen blok a bude spuštěn dotaz.
Co můžete udělat, je, že kdykoli opakujete chybovou zprávu, vymažte příslušnou proměnnou. něco takového:
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 = "";
}