Мы можем хранить изображения, музыку, видео или документы в базе данных (прим: MySql). Для работы с такими данными мы будем использовать поля таблиц с типом BLOB.
В СУБД тип данных BLOB (Binary Large OBject — двоичный большой объект) - массив двоичных данных. В СУБД BLOB — специальный тип данных, предназначенный, в первую очередь, для хранения изображений, аудио и видео, а также компилированного программного кода.
Для начала, создадим таблицу с полем типа BLOB.
CREATE TABLE `books` ( `id` int(11) NOT NULL auto_increment, `title` varchar(150) NOT NULL, `author` varchar(150) NOT NULL, `description` varchar(255) NOT NULL, `on_sale` tinyint(1) NOT NULL, `cover` blob NOT NULL, PRIMARY KEY (`id`));Теперь же, рассмотрим пример как с помощью PDO вставить данные в таблицу:
<?php// configuration$dbtype = "sqlite";$dbhost = "localhost";$dbname = "test";$dbuser = "root";$dbpass = "admin";
// database connection$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
// new data$title = "ZEND FRAMEWORK TUTORIAL";$author = "PHP Everyday";$cover = fopen('7.png','rb');// query$sql = "INSERT INTO books (title,author,cover) values(?,?,?)";
$q = $conn->prepare($sql);$q->bindParam(1, $title);$q->bindParam(2, $author);$q->bindParam(3, $cover, PDO::PARAM_LOB);
$q->execute();
?>Хорошо, теперь “вытащим” эту запись:
<?php// configuration$dbtype = "sqlite";$dbhost = "localhost";$dbname = "test";$dbuser = "root";$dbpass = "admin";
// database connection$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
// query$sql = "SELECT id,title,author,cover FROM books";$q = $conn->prepare($sql);$q->execute();
$q->bindColumn(1, $id);$q->bindColumn(2, $title);$q->bindColumn(3, $author);$q->bindColumn(4, $cover, PDO::PARAM_LOB);
while($q->fetch()){file_put_contents($id.".png",$cover);echo "$title, $author, <img src='".$id.".png'> <br/>";}
?>Легко, не правда ли?