Задать вопрос

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

Всем привет! Видимо началась паранойя, поэтому не могу обойти мимо этого вопроса...
Пользователь добавляет какие-то данные в форму, форма обрабатывается 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 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
Я бы на Вашем месте давно перешел на фреймворк. там в большинстве случаев он сам проверяет правила у модели и выдает ошибки. Ну а так, да конечно нужно проверять... что бы Ваш запрос просто напросто не выдавал ошибку, а выдавал почему не получилось вставить результат.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы