- База данных фото с помощью HTML, PHP и MySQL
- Создание базы данных
- Создание PHP-скриптов для заполнения БД
- Отображение информации
- Заключение
- База данных фото с помощью HTML, PHP и MySQL
- Три этапа загрузки изображения в базу данных
- Шаг 1. Создайте HTML-форму
- Шаг 2. Подключитесь к базе данных и сохраните изображение
- Шаг 3. Отображение сохраненных изображений из базы данных
- Три шага для загрузки изображения на сервер
- Шаг 1. Создайте HTML-форму
- Шаг 2. Сохранение изображения на сервере
- Шаг 3. Вывод изображений
База данных фото с помощью HTML, PHP и MySQL
Хранение изображений в базе данных вместе с другой информацией удобно, когда в вашем приложении заявлена сильная привязка к БД. Так, синхронизировать изображения с другими данными нужно, если вы разрабатываете программу для контрольно-пропускной системы — вместе с личными данными нужно хранить ещё и фотографию для того, чтобы идентифицировать личность.
Для хранения такого контента предусмотрен специальный тип данных MySQL — BLOB. Он вмещает в себя большие двоичные данные: изображения, PDF или прочие мультимедиа-файлы.
Альтернатива использованию BLOB-типа — хранение изображений внутри файловой системы. Но в таком случае мы делаем приложение менее портативным и безопасным — появляется как минимум два тесно связанных модуля: файловая система и база данных. Кроме того, при создании резервных копий не нужно будет делать снимки каталогов системы, достаточно сохранять дампы таблиц MySQL.
В этой статье мы будем разбираться с базой данных фото на примере стека LAMP — Linux, Apache2, MySQL, PHP. Серверы с такой конфигурацией вы можете заказать на cloud.timeweb.com . Для работы с сервером вам понадобится пользователь с привилегиями sudo. О том, как настроить эти привилегии, читайте в статье нашего блога «Редактирование файла sudoers» .
Рассмотрим все этапы работы на примере приложения контрольно-пропускной системы вуза.
Создание базы данных
Для начала создадим базу данных для нового проекта. Можно сделать это через консоль или любой интерфейс СУБД, например, 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 применила изменения:
Теперь и правда можно приступить к созданию таблиц. В нашем случае ограничимся таблицей students, в ней будем хранить информацию о студентах, их фото и права доступа. На её примере также реализуем хранение картинок в базе данных mysql.
Зайдём в MySQL из-под вновь созданного пользователя 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;
- id — первичный ключ таблицы, цифровой идентификатор студентов. При добавлении новых записей MySQL будет самостоятельно генерировать идентификаторы в порядке возрастания, потому что мы использовали ключевое слово AUTO_INCREMENT
- name — ФИО студента. Используем тип данных VARCHAR с ограничением 200, потому что нам не понадобится больше 200 символов для ФИО.
- access_rights — права доступа. Тип ENUM предполагает, что будет выбрано одно значение из перечня.
- userpic — фотография студента, тип данных BLOB будет хранить данные в двоичном формате
- 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:;base64, , где — тип данных, в нашем случае image/png, а — данные base64.
Заключение
В статье на учебном примере с контрольно-пропускной системой для студентов мы разобрались, как хранить изображения в базе данных, используя тип данных BLOB, и определили его основное преимущество по сравнению с хранением данных в файловой системе.
Кроме этого мы научились вставлять медиа-файлы в поля типа BLOB в MySQL, а также выводить их в браузер.
База данных фото с помощью HTML, PHP и MySQL
Есть два способа загрузки изображений: в базу данных или на сервер. В этой статье мы разберемся как с помощью HTML, PHP и MySQL создается база данных фото. Предполагается, что у вас есть базовые знания HTML, PHP и MySQL.
Три этапа загрузки изображения в базу данных
1. Создайте HTML-форму для загрузки.
2. Подключитесь к базе данных и сохраните изображения.
3. Отобразите изображения.
Шаг 1. Создайте HTML-форму
Создадим HTML-форму с методом post и сохраним ее в файле с именем upload.html .
Мы отправляем данные из этой HTML-формы в файл getdata.php , с помощью которого изображение будет сохранено в базе данных.
Шаг 2. Подключитесь к базе данных и сохраните изображение
Сначала нужно подключиться к базе данных. В примере мы используем БД «demo».
Чтобы сохранить изображение в базе, нужно использовать для столбца в таблице тип данных blob . MySQL использует BLOB для хранения двоичных данных. Вы можете использовать BLOB TINYBLOB, BLOB, MEDIUMBLOB или LONGBLOB в зависимости от размера загружаемого рисунка.
Шаг 3. Отображение сохраненных изображений из базы данных
Чтобы вывести изображения, нужно создать два файла. Это файл fetch_image.php.
Теперь мы хотим отобразить изображение — это делается с помощью файла display_image.php .
Три шага для загрузки изображения на сервер
1. Создайте HTML-форму для загрузки изображения.
2. Сохраните путь к базе данных и изображение на сервере.
3. Выведите изображение.
Шаг 1. Создайте HTML-форму
Вы можете использовать HTML-форму из предыдущего примера.
Шаг 2. Сохранение изображения на сервере
На этом этапе мы получаем изображение и сохраняем его в каталоге, а затем сохраняем путь к изображению и имя файла в базе данных. Это файл store_image.php.
Шаг 3. Вывод изображений
Чтобы вывести изображение, нужно получить из базы данных имя файла и путь к нему. Это файл fetch_image.php.
Таким образом можно загрузить изображение в базу данных с помощью HTML, PHP и MySQL.