Вставка картинки в mssql

kompo

Guest
Вставка картинки в mssql

Всем привет.

Есть mssql, с которым происходит общение через odbc.
Вставить картинку (по ощущением больше 10 кб) не получается в поле типа image.

Видимо, где-то стоит limit. Но вот где ;-)
mssql.textlimit и mssql.textsize крутил, но, видимо, при общении через odbc это не помогает...

Может быть кто сталкивался? :)

ps: в odbc.defaultlrl стоит 65000..
 

Bocha

Guest
насколько я знаю MSSQL тип image до 2MB воспринимает. Если ты РНР используешь то зачем тебе odbc?
 

kompo

Guest
почему - это сложный вопрос. так было заведено до меня. старейшены мне пытались рассказать о том, что им не удалось связать iis с php на одной машине с ms sql на другой.

я же тоже плохо представляю, как это сделать.

кстати, чтобы это сделать, на машине c iis должно тоже что-то стоять от mssql или достаточно правильно подключенного php_mssql.dll?
 

kompo

Guest
сделал обращения напрямую к базе.

кстати, настроить dll mssql оказалось сложной задачей на php 4.3.1. После 20 минутного раскидывания dll'ек по всем возможным директориям скачал 4.3.2 и все завертелось.

но вот в image все равно писать не хочет большие картинки.
а в text замечтально пишет.

но вот мне подумалось. ведь image - это binary формат. так pack() делать нужно перед insertom фотографии или нет? и если нужно - то почему мелкие фотки работали без него ;-)

я бы оставил в text, но как-то это не красиво...
 

Bocha

Guest
вот так его надо запихивать
Using SQLPutData to send more than 65,535 bytes of data (for Microsoft® SQL Server™ version 4.21a) or 400 KB of data (for SQL Server version 6.0 and later) for a SQL_LONGVARCHAR (text), SQL_WLONGVARCHAR (ntext) or SQL_LONGVARBINARY (image) column, imposes the following restrictions:

The referenced parameter can be an insert_value in an INSERT statement.

кстати, не очень понимаю, как у тебя в поле text, записывается картинка


The referenced parameter can be an expression in the SET clause of an UPDATE statement.
 

Bocha

Guest
эти типы очень большие и с ними через ODBC работают используя SQLGetData/ SQLPutData

В общем случае при работе с этими типами данных через API они деляться на блоки, а не отправляються целиком и надо реализовывать код, который сшивает(расшивает) блоки. К тому же эти типы данных не хранятся, как все остальные данные в файле базы, а все равно размещаются отдельными объектами поэтому общая рекомендация не морочить себе голову и хранить ссылку на место, где лежит картинка, а саму картинку считывать отдельно. Кстати это работать будет быстрее
 

kompo

Guest
а если я работаю не через odbc? то все равно сшиваем/расшиваем?

как я написал в 3 сверху сообщении мне удалось убедить в нецелесообразности использования odbс, когда у нас есть специальное расширение. и собственно я на него и перелез.

собственно вопросов у меня до сих пор остались...

1) image - это бинарный формат. то есть, вроде как, нолики и единички. соответственно, надо ли нам в php преврашать прочтенный файл в эти нолики?

2) почему ты не понимаешь, как я могу записывать картинку в text? Читаю файл, делаю addslashes, меняю апострофы на двойные (по наводке какого-то сообщения в этом форуме) и полученую ерунду типа "GIF89a..." отправляю в бд.

3) Если я буду продолжать делать как в пункте 2), то
насколько это хорошо или плохо? :)

4) и наконец с чего все начиналось... почему же он в поле типа image не пишет картинки больше 10кб, а в text пишет ;-)

А по поводу хранения картинок в базе, я сам считаю, что это уродство какое-то.. Но не я заказываю музыку...
 
Сверху