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

Соответствует ли данный код хорошим практикам?

Такие длинные строчки с sql-запросами в скобках цикла/условия/и тп - это нормально?
Опыта ноль, и я понятия не имею как это обычно выглядит, а писать спагетти-код не хочется.

$db = new Database();
$tag_id = $_POST['tag_id'];

if (!$db->query("select id from tags where id = $tag_id")->fetchArray()['id']) {
    exit('Тег не найден');
}

$tag_names = array();
foreach ($db->query("select name from tag_names where tag_id = $tag_id")->fetchAll() as $name) {
    array_push($tag_names, $name['name']);
}
  • Вопрос задан
  • 531 просмотр
Подписаться 2 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 4
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Вам больше стоит обеспокоиться тем, что вы запросы формируете интерполяцией строк.
Ответ написан
vladgba
@vladgba
(。◕‿‿◕。)
можно одним запросом, типо такого:
$db = new Database();
$tag_id = $_POST['tag_id'];
$stmt = $db->prepare("SELECT `tag_names`.`name` FROM `tags` INNER JOIN `tag_names` ON `tags`.`id` = `tag_names`.`tag_id` WHERE `tags`.`id` = ?");
$stmt->execute([$tag_id]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (count($rows)<1) {
    exit('Тег не найден');
}

$tag_names = array();
foreach ($rows as $row) {
    array_push($tag_names, $row['name']);
}

помните про sql инъекции!
upd. поменял на более безопасный код
Ответ написан
Да верно, по возможности не используйте запросы в цикле.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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