<?php
/*** хранение изображений в базе данных **
*
//структура таблицы
 
CREATE TABLE image (
id_image int(11) NOT NULL auto_increment,
name tinytext NOT NULL,
content longblob NOT NULL,
PRIMARY KEY  (id_image)
) TYPE=MyISAM;
 
*/
?>
<form enctype='multipart/form-data' method=post>
<input type="file" name="image"><br>
<input type=submit value='Загрузить'>
</form>
<?php
// Число изображений на странице
$pnumber = 3;
 
// Устанавливаем соединение с базой данных
 
// Сетевой адрес MySQL-сервера
$dblocation = "localhost";
// Имя базы данных
$dbname = "book";
// Пользователь
$dbuser = "root";
// Его пароль
$dbpasswd = "";
// Устанавливаем соединение с базой данных
if (!$dbcnx) exit ("К сожалению, не доступен сервер MySQL : ".mysql_error()); // Выбираем базу данных
 
// Обработчик HTML-формы
{
    // Проверяем является ли переданный файл картинкой
    if(substr($_FILES['image']['type'],0,5) == 'image')     {
        // Читаем содержимое файла
        // Уничтожаем файл во временной директории
        unlink($_FILES['image']['tmp_name']);  
        // Экранируем спец-символы в бинарном содержимом файла
 
        // Формируем запрос на добавление файла в таблицу
        $query = "INSERT INTO image VALUES(NULL, '".$_FILES['image']['name']."', '$content')";
        {
            // Осуществляем автоматическую перезагрузку страницы
            echo "<HTML><HEAD>
               <META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'>
            </HEAD></HTML>";
    }
}
?>
 
Для вывода файла можно воспользоваться таким скриптом:
<?php
// Устанавливаем соединение с базой данных
require_once("config.php");
 
// Провряем передан ли параметр id_image
// и является ли он целым числом, чтобы
// предотвратить SQL-инъекцию
{
    exit("Недопустимый формат URL-запроса"); }
 
// Извлекаем файл из базы данных
$query = "SELECT * FROM image
           WHERE id_image = $_GET[id_image]";
 
// Отсылаем заголовки на загрузку файла
header("Content-type: image/*"); // Отправляем файл пользователю
echo $image['content'];
?>