ИСПОЛЬЗОВАНИЕ if заявление не работает, как должно

У меня есть код if используемый в моем коде, но логика кода не работает так, как хотелось бы, так это то, что когда пользователь вводит название города без ввода названия района, система должна отображать сообщение об ошибке

и когда пользователь вводит название города и название района, не входя в lat и долго, система должна отображать сообщение об ошибке.

то, что он имеет в моем коде, заключается в том, что даже если пользователь входит в город и долгое время система выводит сообщение об ошибке, сообщите пользователю, чтобы ввести lat и long

код:

 if($_POST['city']) { $city = $_POST['city']; $lat = $_POST['lat']; $long = $_POST['long']; if($_POST['dist'] =="") { $errorMSG = "you can not add city without having relation with district"; } if($lat || $long ==""){ $errorMSG = "You can not add village Without its coordination";} else { $sql = mysql_query("INSERT INTO village (id, village_name, district_id, lattitude, longitude)VALUES('', '$city', , '$lat', '$long')")or die(mysql_error()); echo $city; } } 

if($lat || $long =="") должно быть, if($lat=="" || $long =="")

Измените это: –

 if($lat || $long =="") 

в

 if($lat =="" || $long =="") 

Объяснение: –

То, что вы делали, – это проверка того, что $ lat не пуст или $ long пуст. Узнайте о приоритете операторов. == имеют более высокий приоритет, чем ||

Ваш код уязвим для SQL-инъекции.
И в этом есть некоторые логические ошибки.

Правильный код с использованием PDO будет

 if($_POST['city']) { $errorMSG = ''; $city = $_POST['city']; $lat = $_POST['lat']; $long = $_POST['long']; $dist = $_POST['dist'] if(!$dist) { $errorMSG .= "you can not add city without having relation with district"; } if(!$lat || !$long) { $errorMSG .= "You can not add village Without its coordination"; } if (!$errorMSG) { $sql = "INSERT INTO village VALUES(NULL, ?, ?, ?, ?)"; $pdo->prepare($sql); $pdo->execute(array($city,$dist,$lat,$long)); } }