Нужно ли проверять каждый шаг в скриптах?

Всем привет! Видимо началась паранойя, поэтому не могу обойти мимо этого вопроса...
Пользователь добавляет какие-то данные в форму, форма обрабатывается php скриптом, где происходит запись с помощью многих MySQL запросов. Понятное дело, что все данные с этими запросами работают вместе и нужны они все. Так вот вопрос в примере... Нужно ли делать столько проверок в скрипте? Ведь даже с проверкой, при ошибке одного запроса - остальные не будут выполнены. И получится так, что часть данных останется в базе, а часть не запишется, что при выводе будет выдавать серверные ошибки (поэтому в скриптах вывода тоже постоянно приходится проверять есть ли эти данные (перед выводом))
<?
// Предположим пришли эти данные
$title= 'Заголовок';
$text = 'Текст новости Текст новос тиТекст новости';

$categoryes = array('2', '7', '15', '12');

$tags = array('новость', 'тег', 'еще тег');

if(!empty($title) && !empty($text) && count($categoryes) > 0){ // проверка на присутствие данных
	
	if($db->query("INSERT INTO `news` (`title`, `text`) VALUES('{$text}', '{$text}')")){
		if($news_id = $db->insert_id){
			
			foreach($categoryes as $val){
				if(is_numeric($val)) $insert_cats[] = "('{$news_id}', '{$val}')";
			}
			
			if(count($insert_cats) > 0){
				$insert_values = implode(', ',$insert_cats);
				
				if($insert_values != ''){
					if($db->query("INSERT INTO `category` (`id_news`, `text`) VALUES {$insert_values}")){
						
						foreach($tags as $val){
							$val = trim($val);
							
							if($val != '') $insert_tags[] = "('{$news_id}', '{$val}')";
						}
						
						if(count($insert_tags) > 0){
							$insert_tags_val = implode(', ',$insert_tags);
							
							if($insert_values != ''){
								if($db->query("INSERT INTO `tags` (`id_news`, `tag`) VALUES {$insert_tags_val}")){
								
									echo 'Новость добавлена';
									die();
									
								}else $err[] = 'Ошибка добавления тегов';
							}else $err[] = 'Ошибка в тегах';
						}else $err[] = 'Теги не обработаны';
					}else $err[] = 'Ошибка записи категорий';
				}else $err[] = 'Ошибка в категориях';
			}else $err[] = 'Категории отсутствуют';
		}else $err[] = 'Не получен id новости';
	}else $err[] = 'Ошибка записи новости';
}else $err[] = 'Не все поля заполнено';

if(count($err) > 0) echo implode(PHP_EOL, $err);
else echo 'что-то неизвестное'; // ибо в случае предвиденных ошибок вывелась бы ошибка или при успешной записи скрипт до сюда не дошел
?>


Прошу не обращать внимание на фильтрацию данных или ошибки в коде (код написал для примера исключительно для вопроса)
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 1
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
Я бы на Вашем месте давно перешел на фреймворк. там в большинстве случаев он сам проверяет правила у модели и выдает ошибки. Ну а так, да конечно нужно проверять... что бы Ваш запрос просто напросто не выдавал ошибку, а выдавал почему не получилось вставить результат.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽