Прежде всего, Вы должны создать новую базу данных, для хранения бинарных данных. Для примера используется следующая таблица. Зайдите в phpMyAdmin, скопируйте и вставьте ниже приведённый код:
CREATE TABLE binary_data ( id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY, description CHAR(50), bin_data LONGBLOB, filename CHAR(50), filesize CHAR(50), filetype CHAR(50) );
Пример php скрипта для сохранения данных в базе данных
Скрипт store.php сохраняет изображение в базу данных переданное через html форму.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Сохранение бинарных данных в базе данных MySQL</title> </head> <body> <?php // Код, который будет выполняться, если форма была оправлена: if ($_POST['submit']) { // подключение к базе данных // (возможно, вам придется настроить имя хоста, имя пользователя и пароль) $dbh = new mysqli("localhost", "root", "", "imagesstore"); { Проверте параметры подключения к базе данных."); } $result=$dbh->prepare("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) "."VALUES ('".$_POST['form_description']."', '".$data."', '".$_FILES["file"]["name"]."', '".$size."', '".$_FILES["file"]["type"]."')"); $result->execute(); $id = $dbh->prepare(); echo "<p>Этот файл имеет следующий идентификатор (ID) в базе данных: <b>".$id."</b>"; } else { // отображаем форму для оправки новых данных: ?> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data"> Описание файла: <input type="text" name="form_description" size="40"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> Файл для загрузки/хранения в базе данных: <input type="file" name="file" size="40"> <p><input type="submit" name="submit" value="Отправить"> </form> <?php } ?> </body> </html>
При выполнении скрипта Вы увидите простую html форму. Для выбора файла (например, изображение) используйте кнопку "Обзор". Затем нажмите кнопку "Отправить". После загрузки файла на веб-сервер скрипт сообщит вам его идентификатор базы данных (ID). ID необходим для получения доступа к информации (при помощи следующего скрипта). Пример php скрипта для вывода изображений в браузер Скрипт getdata.php – это пример скрипта, который извлекает двоичную информацию из базы данных и передает её непосредственно пользователю. getdata.php
<?php // подключение к базе данных // (возможно, вам придется настроить имя хоста, имя пользователя и пароль) $dbh = new mysqli("localhost", "root", "", "imagesstore"); { Проверте параметры подключения к базе данных."); } $query = "SELECT bin_data,filetype from binary_data WHERE id=".$_GET['id']; $result = $dbh->query($query); $row = $result->fetch_array(); echo $row['bin_data']; ?>
Поскольку скрипту необходимо "знать", который файл извлекать, в качестве параметра необходимо указать его ID. Например: Файл сохранен в базе данных под ID 2. Для получения этого файла необходимо вызвать:
getdata.php?id=2
Если в базе данных сохранены изображения, на вашей веб-странице можно использовать скрипт getdata, как например :
Например: В базе данных вы сохранили изображение как ID 3 и хотите, чтобы оно отобразилось на вашей веб-странице. Для этого воспользуйтесь следующим кодом:
Пару полезных советов.
Как сохранить файл, размер которого больше 2 Mб?
Для загрузки и сохранения файлов, чей размер превышает 2 Мб, необходимо внести несколько изменений в скрипт и php/sql настройки в связи с установленными по умолчанию ограничениями. Для хранения файлов размером 2 Мб следует сделать следующее:
Внесите изменения в скрипт store.php. Поменяйте значение MAX_FILE_SIZE на 24000000;
По умолчанию php позволяет передовать файлы размером не более 2 Мб. Необходимо изменить переменную максимального размера файла на 24M. Это можно сделать в php.ini в дириктиве setting upload_max_filesize или в .htaccess прописать строчку php_value upload_max_filesize 24M. В конфигурационных файле apache прописать LimitRequestBody 24000000.
По умолчанию в mysql можно импортировать файлы размером не более 2 Мб. Чтобы снять ограничения размера пакета в mysql, выполните слудующие действия. Откройте файл настройки my.ini, измените строчку innodb_additional_mem_pool_size = 24M
Чтобы изменения вступили в силу, перезагрузите веб сервер Apache и сервер базы данных MySQL.