Целые день пытался корректно загрузить файл в Microsoft SQL в Blob Data Field. И вот, решение найдено! Что бы Вам потом не пришлось много времени потратить на это, рассказываю:
$FileData = addslashes(fread(fopen($filePath, "rb"), filesize($filePath)));
Вот так мы преобразуем файл, а дальше — обычный INSERT в базу!
Поскажите пожалуста почему может не вставлятся файл. Пишет ошибку. Использую драйвер FreeTDS.
$FileData = addslashes(fread(fopen($filesave, «rb»), filesize($filesave)));
$tsql = «insert into tbl_files(id,FileData,Link)values(NewID(),».$FileData.»,'».$_FILES[«filename»][«name»].»‘)»;
$result = mssql_query($db_con,$tsql);
Какую именно ошибку?
Можно полный текст увидеть?
Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near ‘Л’. (severity 15) in /var/www/vhosts/ns.komtels.ru/httpdocs/agent/upload.php on line 45
Warning: mssql_query() [function.mssql-query]: Query failed in /var/www/vhosts/ns.komtels.ru/httpdocs/agent/upload.php on line 45
Когда я использовал в Window драйвер от мелкософта там есть возможность запрос подготовить параметры задать. В никах такого нет?) помогите решить проблему) буду признателен очень
Решил проблему) в запросе нужно взять переменную в кавычки
$tsql = “insert into tbl_files(id,FileData,Link)values(NewID(),’”.$FileData.”’,’”.$_FILES[«filename»][«name»].”‘)”;
вот так!)
Оказалось что данная проблема сохранилась для бинарных файлов. То есть текстовые файлы нормально грузяться в MSSQL а вот бинарники (картинки , pdf …) не хотит) Подскажите как можно загрузить?
Проблема решена созданием ХП. и запуск ее в PHP
У меня получилось обойтись хранимой процедуры для этого. Сначала bin2hex:
$fileData = «0x» . bin2hex(fread(fopen($att->filename_sys, «rb»), filesize($att->filename_sys)));
а потом (заметьте, что $fileData не в одинарных кавычках):
$sql = «INSERT INTO dbo.BinaryStorage(BLOB_Data, MimeType, FileSize) » .
«VALUES (» . $fileData . «, ‘» . $file_type . «‘, ‘» . $file_size . «‘)», $gmsConnection);
Я хотел написать: «получилось обойтись БЕЗ хранимой процедуры»