Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как вставить в базу данных КАРТИНКУ?
 
 автор: Den`s   (15.04.2006 в 18:38)   письмо автору
 
 

Очень срочно, как в базу данных MySQL в какое либо поле вставить картинку какого нибудь размера. А ещё лучше, можно ли их вставить туда (в одно поле) несколько штук. Дико благодарен...

   
 
 автор: cheops   (15.04.2006 в 22:31)   письмо автору
 
   для: Den`s   (15.04.2006 в 18:38)
 

Вы хотите хранить именно изображение, а не путь к нему? Тогда лучше для этого использовать поле тип BLOB, а содержимое изображения, которое можно получить из файла при помощи функции file_get_contents() необходимо пропустить через функцию mysql_escape_string()
<?php
  $text 
mysql_escape_string($text);
?>

   
 
 автор: Den`s   (15.04.2006 в 23:44)   письмо автору
 
   для: cheops   (15.04.2006 в 22:31)
 

А каким запросом можно всавить в поле БД картинку. Перед мной стоит задача из тестового поля, в котором есть адрес картинки, закачать картинку в базу данных. Как обращаться с передачей данных и обработкрй строк знаю, а вот с БД MySQL туговато :(

   
 
 автор: cheops   (16.04.2006 в 13:00)   письмо автору
 
   для: Den`s   (15.04.2006 в 23:44)
 

Для этого необходимо сначала подготовить таблицу, путь для простаты в ней будет лишь два столбца - первичный ключ id_image и поле image для хранения содержимого изображения.
CREATE TABLE tbl (
  id_image int(11) NOT NULL auto_increment,
  image longblob NOT NULL,
  PRIMARY KEY  (id_image)
) TYPE=MyISAM;

Тогда код вставляющий изображение из файла $filename может выглядеть следующим образом
<?php
  
// Устанавливаем соединение с базой данных
  
reqiure_once("config.php");
  
// Извлекаем содержимое файла $filename
  
$contents get_file_contents($filename);
  
// Экранируем спец-символы
  
$contents mysql_escape_string($contents);
  
// Формируем SQL-запрос
  
$query "INSERT INTO tbl VALUES(NULL, '$contents')";
  
// Выполняем SQL-запрос
  
if(!mysql_query($query)) exit(mysql_error());
?>

Запрос $query будет занимать столько же мегабайт, что и файл, даже чуть-чуть побольше - это может привести к проблемам, если значение системной переменной max_allowed_packet в MySQL установлено в небольшое значение (по умолчанию кажется 2 Мб, правда могу врать).
Для соединения с базой данных вам потребуется конфигурационный файл config.php, следующего содержания
<?php
  
///////////////////////////////////////////////////
  // Панель администрирования
  // 2006 (C) IT-студия SoftTime (http://www.softtime.ru)
  ///////////////////////////////////////////////////
  // сейчас выставлен сервер локальной машины
  
$dblocation "localhost";
  
// Имя базы данных, на хостинге или локальной машине
  
$dbname "db";
  
// Имя пользователя базы данных
  
$dbuser "root";
  
// и его пароль
  
$dbpasswd "";

  
// Устанавливаем соединение с базой данных
  
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
  if (!
$dbcnx) {
   exit( 
"<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
  }
  
// Выбираем базу данных
  
if (! @mysql_select_db($dbname,$dbcnx) ) {
    exit( 
"<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
  }

  
// Определяем версию сервера
  
$query "SELECT VERSION()";
  
$ver mysql_query($query);
  if(!
$ver) exit("Ошибка при определении версии MySQL-сервера");
  
$version mysql_result($ver0);
  list(
$major$minor) = explode("."$version);
  
// Если версия выше 4.1 сообщаем серверу, что будем работать с
  // кодировкой cp1251
  
$ver $major.".".$minor;
  if((float)
$ver >= 4.1)
  {
    
mysql_query("SET NAMES 'cp1251'");
  }
?>

   
 
 автор: Den`s   (17.04.2006 в 16:36)   письмо автору
 
   для: cheops   (16.04.2006 в 13:00)
 

Выдаёт ошибку:
Call to undefined function: get_file_contents()
Версия php: 4.3.9
Выдавал ошибку на: reqiure_once я заменил на include
Может нужны какие то настройки в php.ini ???

   
 
 автор: Trianon   (17.04.2006 в 16:52)   письмо автору
 
   для: Den`s   (17.04.2006 в 16:36)
 

опечатка. Функция правильно называется file_get_contents()

   
 
 автор: Den`s   (17.04.2006 в 18:44)   письмо автору
 
   для: Trianon   (17.04.2006 в 16:52)
 

Большое спасибо, у меня всё получилось.
Не подскажите, как мне теперь эту картинку прочитать из БД и отобразить. Уже 2 часа мучаюсь и ничего не получается

   
 
 автор: Trianon   (17.04.2006 в 18:57)   письмо автору
 
   для: Den`s   (17.04.2006 в 18:44)
 

<?php 
  
// Устанавливаем соединение с базой данных 
  
reqiure_once("config.php"); 
  
// определяем номер строки с картинкой 
  
$nomer 1;   
  
// определяем тип картинки
  
$type "image/jpeg";
  
// Формируем SQL-запрос 
  
$query "SELECT image FROM tbl WHERE id_image=$nomer"
  
// Выполняем SQL-запрос 
  
if(!($res mysql_query($query))) exit(mysql_error()); 
  
// отправляем тип картинки в заголовке.
  
header("Content-type: $type");
  
// отправляем саму картинку
  
echo mysql_result($res0);
?> 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования