Как загрузить файл из PHP в MS SQL

Целые день пытался корректно загрузить файл в Microsoft SQL в Blob Data Field. И вот, решение найдено! Что бы Вам потом не пришлось много времени потратить на это, рассказываю:

$FileData = addslashes(fread(fopen($filePath, "rb"), filesize($filePath)));

Вот так мы преобразуем файл, а дальше — обычный INSERT в базу!

8 комментариев on "Как загрузить файл из PHP в MS SQL"


  1. Поскажите пожалуста почему может не вставлятся файл. Пишет ошибку. Использую драйвер 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);


  2. 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 драйвер от мелкософта там есть возможность запрос подготовить параметры задать. В никах такого нет?) помогите решить проблему) буду признателен очень


  3. Решил проблему) в запросе нужно взять переменную в кавычки

    $tsql = “insert into tbl_files(id,FileData,Link)values(NewID(),’”.$FileData.”’,’”.$_FILES[«filename»][«name»].”‘)”;

    вот так!)


  4. Оказалось что данная проблема сохранилась для бинарных файлов. То есть текстовые файлы нормально грузяться в MSSQL а вот бинарники (картинки , pdf …) не хотит) Подскажите как можно загрузить?


  5. У меня получилось обойтись хранимой процедуры для этого. Сначала 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);


  6. Я хотел написать: «получилось обойтись БЕЗ хранимой процедуры»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.