База данных фото с помощью HTML, PHP и MySQL

    Команда Simple-Server
    03.06.2026
    5 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    Для начала создадим базу данных для нового проекта. Можно сделать это через консоль или любой интерфейс СУБД, например, phpminiadmin. Мы воспользуемся первым вариантом.

    Подключаемся к серверу через ssh и входим на сервер MySQL с привилегиями суперпользователя:

    Затем запустим команду для создания базы данных. Назовём её control_access:

    mysql> CREATE DATABASE control_access;

    После создания увидим фразу: Query OK, 1 row affected (0.01 sec). Это значит, что база данных успешно создана, можем приступать к работе с таблицами.

    Но перед этим для безопасности нужно создать отдельного пользователя, который будет работать только с этой базой. Для удобства назовём его также, как и базу данных:

    mysql> CREATE USER 'control_access'@'localhost' IDENTIFIED BY 'Pas$w0rd!';

    где passw0rd — ваш надёжный пароль. Теперь предоставим ему права на все операции с базой данных control_access:

    mysql> GRANT ALL PRIVILEGES ON control_access.* TO 'control_access'@'localhost';

    После этого нужно очистить таблицу прав доступа, чтобы MySQL применила изменения:

    mysql> FLUSH PRIVILEGES;

    Теперь и правда можно приступить к созданию таблиц. В нашем случае ограничимся таблицей students, в ней будем хранить информацию о студентах, их фото и права доступа. На её примере также реализуем хранение картинок в базе данных mysql.

    Зайдём в MySQL из-под вновь созданного пользователя control_access:

    mysql -u control_access -p

    Переключаемся на одноимённую базу данных:

    mysql> USE 'control_access';

    … и создаём таблицу students:

    CREATE TABLE `students` ( id INT PRIMARY KEY COMMENT "Идентификатор студента", name VARCHAR(200) NOT NULL COMMENT "ФИО студента", access_rights ENUM ('full', 'extended', 'basic', 'denied') DEFAULT 'basic' COMMENT "Права доступа", userpic BLOB COMMENT "Фото студента", created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT "Дата регистрации" ) ENGINE = InnoDB;
    1. id — первичный ключ таблицы, цифровой идентификатор студентов. При добавлении новых записей MySQL будет самостоятельно генерировать идентификаторы в порядке возрастания, потому что мы использовали ключевое слово AUTO_INCREMENT
    2. name — ФИО студента. Используем тип данных VARCHAR с ограничением 200, потому что нам не понадобится больше 200 символов для ФИО.
    3. access_rights — права доступа. Тип ENUM предполагает, что будет выбрано одно значение из перечня.
    4. userpic — фотография студента, тип данных BLOB будет хранить данные в двоичном формате
    5. created_at — дата создания записи. При добавлении новой записи MySQL автоматически добавит в этот столбец текущую временную метку.

    Для хранения данных мы выбрали InnoDB, что позволит нам использовать широкий набор функций, например, транзакции MySQL.

    Создание PHP-скриптов для заполнения БД

    Таблица students готова к заполнению, теперь можно загружать туда данные. Напишем PHP-скрипт, который будет регистрировать студентов в системе и добавлять данные в students.

    Сначала создадим конфигурационный файл с подключением к базе данных, назовём его config.php:

    Для работы с базой данных используем драйвер PDO. В него передаём параметры подключения — имя базы данных, имя пользователя, пароль и адрес сервера, на котором база располагается.

    Теперь создадим скрипт для наполнения нашей таблицы тестовыми данными.

    Здесь мы подключились к базе данных, затем вставили в неё нужные данные. В этом скрипте наглядно понятно, как добавить картинку в базу данных sql, — нужно просто поместить её содержимое в соответствующее поле. Для получения содержимого файла мы воспользовались встроенной php-функцией file_get_contents.

    Затем каждый из элементов массива в цикле вставили в базу данных с помощью выражения INSERT.

    Мы разместили в базе данных информацию о студентах, теперь нужно вывести данные. Для удобства мы просто отобразим всё, что есть в таблице на отдельной странице view.php.

    Здесь мы снова использовали подключение к pdo, внутри файла config.php, затем запросили выборку всех студентов с помощью выражения SELECT * FROM students.

    Все полученные данные вывели в таблицу HTML.

    Чтобы вывести данные, хранящиеся в объекте BLOB, в браузер, мы закодировали данные в формат base64 с помощью встроенной функции php и использовали следующий синтаксис при указании источника изображения в теге img:

    data:{type};base64, {data}, где {type} — тип данных, в нашем случае image/png, а {data} — данные base64.


    Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация? Посмотрите все доступные тарифы

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны