|
11.01.2007, 20:01
|
#1
|
Поселенец
Регистрация: 11.03.2004
Адрес: Мегион
Возраст: 39
Сообщений: 484
Галерея:
0
Р:
|
вставить 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]
|
|
|
12.01.2007, 11:05
|
#2
|
Почетный ветеран
Регистрация: 05.08.2003
Адрес: N61°3'E76°6' - Мегион
Сообщений: 5,498
Р:
|
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) )
...
}
}
///////////// требуется отладка этого еще
Но суть в том что запихивать данные в блоб допустимыми частями
|
|
|
15.01.2007, 13:42
|
#3
|
Поселенец
Регистрация: 11.03.2004
Адрес: Мегион
Возраст: 39
Сообщений: 484
Галерея:
0
Р:
|
вставить BLOB в Oracle средствами PHP4
А что нужно вставить этом месте (выделенно красным цветом)
update PARTNER_KONTACT set <поле_для_$r> = concat(<поле_для_$r>,substr($r,$cnt*$msize,$msize))[/color]
туда должны попадать данные которые в данный момент в поле PHOTO находятся, а как это объяснить компу на языке SQL? Простой SELECT туда не катит.
|
|
|
17.01.2007, 01:20
|
#4
|
Постоянный посетитель
Регистрация: 09.05.2003
Адрес: vector crew
Сообщений: 82
Галерея:
0
Р:
|
вставить BLOB в Oracle средствами PHP4
вот посмотри тут
http://www.softtime.ru/forum/read.ph...me=7088&page=1
но похоже этот под php5 и используется OCIBindByName.
ну попробуй как-нибудь по 4-ку адаптировать.
|
|
|
25.01.2007, 11:13
|
#5
|
Поселенец
Регистрация: 11.03.2004
Адрес: Мегион
Возраст: 39
Сообщений: 484
Галерея:
0
Р:
|
вставить BLOB в Oracle средствами PHP4
Спасибо, но да - там php5.
Ладно, я видимо всех уже задолбал со своим вопросом, решил перейти на php5, появилась другая проблема(собственно из за которой я и не хотел на него переходить), теперь не могу связать php5 и Oracle 8.1. Они вообще вместе работают, кто знает? Я бегло по сайтикам полазил, там везде связка идет php5 и Oracle 9 и выше...
Ошибка на оракловую библиотеку OCI.dll, php там функцию OCIStmtPrepare2 не может найти.
Есть идеи или советы?
|
|
|
25.01.2007, 12:18
|
#6
|
Постоянный посетитель
Регистрация: 09.05.2003
Адрес: vector crew
Сообщений: 82
Галерея:
0
Р:
|
вставить BLOB в Oracle средствами PHP4
PHP5 работает с Oracle8, это точно.
возможно ты, что-то недонастроил.
вот, посмотри это http://www.php.net/manual/ru/ref.oci8.php
|
|
|
25.01.2007, 15:22
|
#7
|
Поселенец
Регистрация: 11.03.2004
Адрес: Мегион
Возраст: 39
Сообщений: 484
Галерея:
0
Р:
|
Re: вставить BLOB в Oracle средствами PHP4
Спасибо. Действительно работает судя по ссылке. У меня клиент старый Oracle, я просто думал что версия клиента должна совпадать с версией сервера, оказывается клиент может быть и старше. Все - качаю 10-го клиента и буду упражняться.
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Oracle
|
Исчадие 13 |
Софт |
8 |
22.01.2010 12:53 |
Часовой пояс GMT +6, время: 08:08.
|