Почему в title выводится только 1 колонка из MySQL?

Почему в title выводится только 1 колонка из MySQL? Т.е на всех страницах один и тот же title Как это исправить?

  <!-- Блок: Подключение  -->
  <?php require 'vendorphp/db.php'; ?>
  <!-- Блок: Подключение  -->

  <?php
  header("X-XSS-Protection: 1; mode=block");
  header("Referrer-Policy: no-referrer");
  header("Referrer-Policy: strict-origin-when-cross-origin");
  header("X-Frame-Options:sameorigin");
  header("X-Permitted-Cross-Domain-Policies: none");
  header('Strict-Transport-Security: max-age=31536000; includeSubDomains; preload');
  header("X-Content-Type-Options: nosniff");
  header_remove('x-powered-by');
  ?>

  <!DOCTYPE html>
  <html lang="ru" itemscope itemtype="http://vfilms.ru">

  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="Удобный сайт c целью просмотра бесплатных актуальных фильмов включая скачивание безо всяких реклам">
    <meta name="keywords" content="VFilms, онлайн фильмы 2021 бесплатно, фильмы безо всяких реклам, актуальные фильмы, удобное скачивание фильмов" />
    <meta property="og:title" content="Сайт с актуальными фильмами 2021 года в хорошем качестве без рекламы и скачиванием в один клик" />
    <meta property="og:url" content="https://vfilms.ru/" />
    <meta property="og:image" content="https://a.radikal.ru/a09/2103/62/7e3ceaf463bb.png" />
    <meta property="og:image:width" content="1200" />
    <meta property="og:image:height" content="630" />
    <meta property="og:description" content="Давно искали сайт с актуальными фильмами без мешающей рекламы и удобным скачиванием? - VFilms.ru для тебя!" />
    <meta property="og:site_name" content="Удобный сайт с актуальными фильмами без мешающей рекламы и скачиванием в один клик" />
    <meta itemprop="name" content="VFilms - Смотреть онлайн фильмы 2021 бесплатно без рекламы">
    <meta itemprop="description" name="description" content="Удобный сайт с актуальными фильмами 2021 года без рекламы">
    <meta itemprop="image" name="image" content="https://a.radikal.ru/a09/2103/62/7e3ceaf463bb.png">
    <meta name="author" content="VFilms">
    <meta name="copyright" lang="ru" content="VFilms">
    <meta name="yandex-verification" content="18abbd548eb39fc4" />
    <link rel="image_src" href="https://a.radikal.ru/a09/2103/62/7e3ceaf463bb.png">
    <?php
    $singles = get_singles_all();
    foreach ($singles as $single) { ?>
      <title><?php echo $single["htitle"]; ?></title> <?php } ?>
    <link rel="icon" type="image/png" href="img/sitefavicon.ico">
    <link href="/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
    <link href="/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
    <link href="/css/osahan.css" rel="stylesheet">
    <link rel="stylesheet" href="/vendor/owl-carousel/owl.carousel.css">
    <link rel="stylesheet" href="/vendor/owl-carousel/owl.theme.css">
  </head>
введите сюда описание изображения


Ответы (1 шт):

Автор решения: InDevX

Не верный подход. Никакой цикл не нужен.

Допустим, у вас страницы открываются через id: vfilms.ru/video/1, vfilms.ru/video/2, ...

Тогда title можно сделать через какой-то метод.

<title><?php echo getTitle(); ?></title>

и реализация

function getTitle(): string {
    global $db;
    $sth = $db->prepare("SELECT * FROM singles WHERE id=?");
    $sth->execute([$_GET['id']]);
    $single = $sth->fetchColumn();
    return $single['title'];
}

Но, за каждым эл-том обращаться в базу не айс... Потому нужно при загрузке страницы в первую очередь находить запись в базе и записывать её, условно, в переменную, которую можно использовать в любом месте на странице.

→ Ссылка