Старый 11.01.2007, 20:01   #1
Поселенец
 
Аватар для Lex
 
Регистрация: 11.03.2004
Адрес: Мегион
Возраст: 38
Сообщений: 484
Галерея: 0
Р: Lex скоро придёт к известности
вставить BLOB в Oracle средствами PHP4

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

insert into PARTNER_KONTACT values (IDCONTACT.NEXTVAL, ...[куча всяких других полей]...,'$r')

сдесь переменная $r это файл-картинка, ну вот так примерно:

$fp = fopen($myfile,"rb");
$r = fread($fp, filesize($myfile));
fclose($fp);
$r=bin2hex($content);


В базу эта самая картинка добавляется только в том случае если она очень маленькая, дело в том что длинна строки в запросе SQL ограничена 4000 с мелоью символами, если я не ошибаюсь,а строка большая очень получается если так данные добавлять. Подскажите плиз если кто знает другой способ добавления этих самых blob - данных.
Я сегодня с 9 утра пролазил в нете в поисках чего то подходящего, ни чего не нашел. Был один вариант с oci_bind_by_name(), но эта функция тока в php5, а у меня php4. Вариант с перелопачивание сервера, для установки php5, тока в крайнем случае. Остальное что пробовал работает криво... в общем подскажите кто что может плиз.[/i][/code][/i]
Lex вне форума   Ответить с цитированием
Старый 12.01.2007, 11:05   #2
Почетный ветеран
 
Аватар для Kosting
 
Регистрация: 05.08.2003
Адрес: N61°3'E76°6' - Мегион
Сообщений: 5,498
Галерея: 67
Записей в дневнике: 66
Р: Kosting отключил(а) отображение уровня репутации
Re: вставить BLOB в Oracle средствами PHP4

Цитата:
Сообщение от Lex
Нужна помощь, ну собственно в названии большая часть сказана.
Делаю примерно что то вроде такого запроса:

insert into PARTNER_KONTACT values (IDCONTACT.NEXTVAL, ...[куча всяких других полей]...,'$r')

сдесь переменная $r это файл-картинка, ну вот так примерно:

$fp = fopen($myfile,"rb");
$r = fread($fp, filesize($myfile));
fclose($fp);
$r=bin2hex($content);


В базу эта самая картинка добавляется только в том случае если она очень маленькая, дело в том что длинна строки в запросе SQL ограничена 4000 с мелоью символами, если я не ошибаюсь,а строка большая очень получается если так данные добавлять. Подскажите плиз если кто знает другой способ добавления этих самых blob - данных.
Я сегодня с 9 утра пролазил в нете в поисках чего то подходящего, ни чего не нашел. Был один вариант с oci_bind_by_name(), но эта функция тока в php5, а у меня php4. Вариант с перелопачивание сервера, для установки php5, тока в крайнем случае. Остальное что пробовал работает криво... в общем подскажите кто что может плиз.[/i][/code][/i]
Не зная других тонкостей, можно предложить вариант:

$msize = 4000;

insert into PARTNER_KONTACT values (IDCONTACT.NEXTVAL, ...[куча всяких других полей]...,'substr($r,0,$msize)')

if ($r >= $msize) {
$cnts = ceil ($r / $msize)
for ($c = 1; $c <= $cnts; $cnt++) {
...
update PARTNER_KONTACT set <поле_для_$r> = concat(<поле_для_$r>,substr($r,$cnt*$msize,$msize) )
...
}
}
///////////// требуется отладка этого еще

Но суть в том что запихивать данные в блоб допустимыми частями
Kosting вне форума   Ответить с цитированием
Старый 15.01.2007, 13:42   #3
Поселенец
 
Аватар для Lex
 
Регистрация: 11.03.2004
Адрес: Мегион
Возраст: 38
Сообщений: 484
Галерея: 0
Р: Lex скоро придёт к известности
вставить BLOB в Oracle средствами PHP4

А что нужно вставить этом месте (выделенно красным цветом)

update PARTNER_KONTACT set <поле_для_$r> = concat(<поле_для_$r>,substr($r,$cnt*$msize,$msize))[/color]

туда должны попадать данные которые в данный момент в поле PHOTO находятся, а как это объяснить компу на языке SQL? Простой SELECT туда не катит.
Lex вне форума   Ответить с цитированием
Старый 17.01.2007, 01:20   #4
Постоянный посетитель
 
Аватар для yusla
 
Регистрация: 09.05.2003
Адрес: vector crew
Сообщений: 82
Галерея: 0
Р: yusla на пути к лучшему
вставить BLOB в Oracle средствами PHP4

вот посмотри тут
http://www.softtime.ru/forum/read.ph...me=7088&page=1
но похоже этот под php5 и используется OCIBindByName.
ну попробуй как-нибудь по 4-ку адаптировать.
yusla вне форума   Ответить с цитированием
Старый 25.01.2007, 11:13   #5
Поселенец
 
Аватар для Lex
 
Регистрация: 11.03.2004
Адрес: Мегион
Возраст: 38
Сообщений: 484
Галерея: 0
Р: Lex скоро придёт к известности
вставить BLOB в Oracle средствами PHP4

Спасибо, но да - там php5.
Ладно, я видимо всех уже задолбал со своим вопросом, решил перейти на php5, появилась другая проблема(собственно из за которой я и не хотел на него переходить), теперь не могу связать php5 и Oracle 8.1. Они вообще вместе работают, кто знает? Я бегло по сайтикам полазил, там везде связка идет php5 и Oracle 9 и выше...
Ошибка на оракловую библиотеку OCI.dll, php там функцию OCIStmtPrepare2 не может найти.
Есть идеи или советы?
Lex вне форума   Ответить с цитированием
Старый 25.01.2007, 12:18   #6
Постоянный посетитель
 
Аватар для yusla
 
Регистрация: 09.05.2003
Адрес: vector crew
Сообщений: 82
Галерея: 0
Р: yusla на пути к лучшему
вставить BLOB в Oracle средствами PHP4

PHP5 работает с Oracle8, это точно.
возможно ты, что-то недонастроил.
вот, посмотри это http://www.php.net/manual/ru/ref.oci8.php
yusla вне форума   Ответить с цитированием
Старый 25.01.2007, 15:22   #7
Поселенец
 
Аватар для Lex
 
Регистрация: 11.03.2004
Адрес: Мегион
Возраст: 38
Сообщений: 484
Галерея: 0
Р: Lex скоро придёт к известности
Re: вставить BLOB в Oracle средствами PHP4

Цитата:
Сообщение от yusla
PHP5 работает с Oracle8, это точно.
возможно ты, что-то недонастроил.
вот, посмотри это http://www.php.net/manual/ru/ref.oci8.php
Спасибо. Действительно работает судя по ссылке. У меня клиент старый Oracle, я просто думал что версия клиента должна совпадать с версией сервера, оказывается клиент может быть и старше. Все - качаю 10-го клиента и буду упражняться.
Lex вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Oracle Исчадие 13 Софт 8 22.01.2010 12:53


Часовой пояс GMT +6, время: 09:31.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
© megion.net

Rambler's Top100