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

Правильно ли на php организован вывод статей?

Здравствуйте, не могли бы вы подсказать правильно ли я вывожу из базы данных статьи. Я как 8 дней только изучаю php. Выбрал шаблон проектирования MVC, но как правильно написать функцию в модели понятия не имею. Будет ли этот код не безопасный и возможно ли ввести sql инъекцию?
В модели мне только надо как-то запихнуть массив в
$art_content[] = $row;
и как-то значение переменной или массива
$art_content[] = $row + $views;
В котроллере вроде бы обработал запрос из get приведя к целочисленному типу
$art_id = abs((int)$_GET['article_id']);
function article_content($art_id){
		$query = "SELECT `article_id`, 
						`title`, 
						`keywords`, 
						`description`, 
						`img_link`, 
						`date`, 
						`author`, 
						`comment`, 
						`short_text`, 
						`content_text`, 
						`category`, 
						`views`, 
						`visible` FROM `article` WHERE `article_id`='{$art_id}' AND `visible`='1' LIMIT 1";
		$res = mysql_query($query);
		$art_content = array();
		while($row = mysql_fetch_assoc($res)){
			$views = $row['views'] + 1;
			$query_views = "UPDATE `article` SET `views`='{$views}' WHERE `article_id`='{$art_id}'";
			$res_update = mysql_query($query_views);
			$art_content['title'][$row['title']]
						['date'][$row['date']]
						['author'][$row['author']]
						['content_text'][$row['content_text']] = $views;
		}
		return $art_content;
	}

Вывод таким образом но по моему массив сформирован не верно ключи какие то не такие(
<?php if($art_content):?>
			<?php foreach($art_content['title'] as $title => $key):?>
				<?php foreach($key['date'] as $date => $key):?><?php endforeach;?>
				<?php foreach($key['author'] as $author => $key):?><?php endforeach;?>	
				<?php foreach($key['content_text'] as $content_text => $views):?><?php endforeach;?>	
<?php endforeach; ?>
<?php else:?>
<p>Здесь статей нет!</p>
<?php endif; ?>
  • Вопрос задан
  • 436 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Не используйте функции mysql_, начиная с PHP 7.0 они не работают. Вместо этого используйте подготовленные запросы PDO или mysqli_.
Вместо while используйте if, у вас возвращается всего одна строка.
В UPDATE достаточно указать `views` = `views`+1. Ваш вариант не годится, поскольку между SELECT и UPDATE значение `views` в базе данных может измениться.
Ну и разберитесь с массивом $art_content, сейчас там у вас что-то совсем непонятное. Скорее всего, вы хотели сделать что-то вроде
$art_content['title'] = $row['title'];
$art_content['date'] = $row['date'];
...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
А где тут MCV если выборка из базы в контролере? Все взаимодействие с базой должно быть в моделе.

Вполне возможно что Ваша структура имеет место быть, но это точно не MCV
ruseller.com/lessons.php?id=666

Так же советовал бы посмотреть на такие вещи как ООП и PDO
Ответ написан
Ваш ответ на вопрос

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

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