! empty работает в этом коде:
if (!empty($p1_firstname))
mysql_query ("INSERT INTO cases VALUES ('','$case','$date_booked','$p1_firstname','$p1_lastname','$city')");
if (!empty($p2_firstname))
$register_case = mysql_query ("INSERT INTO cases VALUES ('','$case','$date_booked','$p2_firstname','$p2_lastname','$city')");
но не этот код:
if (!empty($p1_firstname))
$passenger1 = 1;
mysql_query ("INSERT INTO cases VALUES ('','$case','$passenger1','$date_booked','$p1_firstname','$p1_lastname','$city')");
if (!empty($p2_firstname))
$passenger2 = 2;
$register_case = mysql_query ("INSERT INTO cases VALUES ('','$case','$passenger2','$date_booked','$p2_firstname','$p2_lastname','$city')");
Он по-прежнему выполняет запрос, даже если поле пусто. Что можно сделать, чтобы исправить это?
Потому что вам не хватает фигурных скобок
if (!empty($p1_firstname)) {
$passenger1 = 1;
mysql_query ("INSERT INTO cases VALUES ('','$case','$passenger1','$date_booked','$p1_firstname','$p1_lastname','$city')");
}
if (!empty($p2_firstname)) {
$passenger2 = 2;
$register_case = mysql_query ("INSERT INTO cases VALUES ('','$case','$passenger2','$date_booked','$p2_firstname','$p2_lastname','$city')");
}
Отсутствующие фигурные скобки означают, что только оператор, следующий за if
, выполняется, если их условия выполнены. Вызов mysql_query()
вообще не является частью блоков if
и будет выполняться независимо от того, являются ли ваши переменные empty()
или нет.
Отключив фигурные скобки и, не отступая от правильного кода, такая ошибка становится еще труднее обнаружить. Не то чтобы вы этого не сделали, но это намного безопаснее и приводит к меньшему времени, потраченному на упущение, чтобы привыкнуть к хорошему отступу и использовать фигурные скобки, чтобы четко указывать блоки потока управления.