các biến của bạn như $fname $lname $gender $age $email $course
được đặt trong điều kiện if sau if điều kiện cho isset($_POST['register'])
. Bây giờ, ngay cả khi xác thực của bạn hoạt động, dữ liệu sẽ vẫn được nhập vào cơ sở dữ liệu. bởi vì bạn đã đặt điều kiện
if($fname&&$lname&&$gender&&$age&&$email&&$course)
Bây giờ điều khiển sẽ nhập khối đó khi bạn có thậm chí một giá trị duy nhất trong tất cả các biến đó. Điều phải xảy ra là bạn đặt sai giá trị, những giá trị đó đang được xác thực, thông báo sẽ được hiển thị, nhưng khi đầu tiên nếu khối kết thúc, vì các biến $ _POST vẫn có một số giá trị, bất kể chúng không hợp lệ, thứ hai nếu khối sẽ được nhập và truy vấn sẽ được kích hoạt.
Những gì bạn có thể làm là, bất cứ khi nào bạn lặp lại thông báo lỗi, hãy bỏ trống biến tương ứng đó. một cái gì đó như thế này:
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 = "";
}