Автор Тема: Как записать в базу MySQL и прочитать из нее картинку в бинарном режиме?  (Прочитано 3180 раз)

0 Пользователей и 1 Гость просматривают эту тему.

  • Гость
Народ нужна помощь.
Нужно загрузить картинку в бинарном режиме и положить ее в базу данных.
А потом взять отуда и показать как картинку в браузере.

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
И что из этого не получается?
2B OR NOT 2B = FF

  • Гость
open MYFILE, "binmode(MYFILE);
$pic = ;
close MYFILE;

$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");
$query = "UPDATE $tablename SET PIC=\'$pic\'  WHERE ID=1";
$sth = $dbh->prepare($query);
$sth->execute;
$dbh->disconnect;

Понятно, можно короче, но так понятнее всем.
Короче, программа считывает файл, потом его вроде записывает в базу, можно даже вывести переменную $pic с заголовком image/gif и она отобразиться без проблем.

$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");
$query = "SELECT * FROM $tablename WHERE ID=1";
@row = $dbh->selectrow_array($query);
$dbh->disconnect;

print "Content-type: image/gif\\n\\n";
print @row[4];

И вот тут то полный облом, как будто в этой ячейке ничего не лежит. Естественно все пароли и таблицы правильны, иначе вряд ли без ошибок бы обошлось... Вот такая вот проблема.

Оффлайн Harvester

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 123
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
PIC какого формата было создано?
Если ты не один, значит... ты ноль!

  • Гость
поле PIC  формата BLOB

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Цитировать

$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");
$query = "UPDATE $tablename SET PIC=\'$pic\' WHERE ID=1";
$sth = $dbh->prepare($query);
$sth->execute;
$dbh->disconnect;

Я бы испльзовал placeholder:
$dbh = DBI->connect("dbi:$dbdriver:$basename:$hostname:$port","$username","$password");
$query = "UPDATE $tablename SET PIC=? WHERE ID=1";
$sth = $dbh->prepare($query);
$sth->execute($pic);
$dbh->disconnect;

Цитировать

print "Content-type: image/gif\\n\\n";
print @row[4];

print "Content-type: image/gif\\n\\n";
binmode STDOUT;
print @row[4];
« Последнее редактирование: 07 Марта 2002, 09:50:18 от Chs »
2B OR NOT 2B = FF

  • Гость
Вроде заработало.
После того, как поток вывода тоже бинарным открыл.

НО! только Gif  jpeg работать не желает  :-(

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28