Продолжаем развивать наш сайт — теперь добавим к нему базу данных, чтобы хранить статьи, пользователей и другие данные. На фото — интерфейс phpMyAdmin, где мы как раз создаём базу для проекта.

Вот что происходит на скриншоте и как это соотносится с реальной задачей:
- Сервер: localhost. Это значит, что база данных крутится на вашем компьютере — идеально для разработки и тестов. Никаких внешних серверов и сложной настройки пока не нужно.
- Поле «Создать базу данных». В него мы вводим имя — в нашем случае
website. Это название будет использоваться в коде сайта (в настройках подключения к БД), поэтому лучше сразу выбрать простое и понятное имя без пробелов и спецсимволов. - Кодировка
utf8mb4_0900_ai_ci. Это современный стандарт для MySQL. Он поддерживает все языки (включая русский) и эмодзи, аai_ciозначает, что поиск будет регистронезависимым и с учётом правил сортировки языка. Для нового проекта это лучший выбор. - Кнопка «Создать». После её нажатия база появится в списке слева, и можно будет переходить к созданию таблиц.
Создаём первую таблицу для статей
Как только база website создана, нужно добавить в неё таблицу, где будут храниться статьи блога. В phpMyAdmin это делается через вкладку «SQL» — туда можно вставить готовый запрос.

CREATE TABLE pages ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, slug VARCHAR(255) NOT NULL UNIQUE, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, meta_description VARCHAR(255) DEFAULT NULL, meta_keywords VARCHAR(255) DEFAULT NULL, is_published TINYINT(1) NOT NULL DEFAULT 1, sort_order INT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Что значит каждое поле (разметка и «длина»)
| Поле | Тип | Длина / ограничения | Смысл (как использовать в коде) |
|---|---|---|---|
id |
INT UNSIGNED |
— | Уникальный ID страницы. В PHP будет $row['id']. |
slug |
VARCHAR(255) |
до 255 символов, UNIQUE |
URL‑идентификатор, например about, catalog-shoes. Используется в адресной строке и для поиска страницы. |
title |
VARCHAR(255) |
до 255 символов | Заголовок страницы (тег <title> и <h1>). |
content |
TEXT |
до ~65 тыс. символов (и больше в зависимости от движка) | Основной HTML‑контент страницы. Сюда можно класть готовую разметку. |
meta_description |
VARCHAR(255) |
до 255 символов | Мета‑описание (тег <meta name="description">). |
meta_keywords |
VARCHAR(255) |
до 255 символов | Ключевые слова (сейчас почти не используются, но удобно хранить). |
is_published |
TINYINT(1) |
0 или 1 | Флаг публикации: 1 — страница видна, 0 — черновик. |
sort_order |
INT |
целое число | Порядок сортировки в меню/каталоге (чем меньше число, тем выше в списке). |
created_at |
DATETIME |
— | Дата создания страницы. |
updated_at |
DATETIME |
— | Дата последнего обновления (автоматически обновляется базой). |
Вот что получилось:

