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

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

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

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

8 Comments 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. Я хотел написать: “получилось обойтись БЕЗ хранимой процедуры”

Leave a Reply

Your email address will not be published. Required fields are marked *