Вставьте двоичные данные в SQL Server, используя PHP - PullRequest
6 голосов
/ 27 марта 2009

У меня есть поле varbinary (MAX) в базе данных SQL Server 2005. Я пытаюсь выяснить, как вставить двоичные данные (например, изображение) в это поле с помощью PHP. Я использую ODBC для подключения к базе данных SQL Server. Я видел несколько примеров, которые объясняют это для использования с базой данных MySql, но я не смог заставить ее работать с SQL Server. Спасибо.

Ответы [ 3 ]

17 голосов
/ 04 апреля 2011
function prepareImageDBString($filepath)
{
    $out = 'null';
    $handle = @fopen($filepath, 'rb');
    if ($handle)
    {
        $content = @fread($handle, filesize($filepath));
        $content = bin2hex($content);
        @fclose($handle);
        $out = "0x".$content;
    }
    return $out;
}

использование:

$out = prepareImageDBString('/img/myimg.png');
mssql_query("INSERT INTO MyTable(MyImage) VALUES($out) ");

MyImage - поле SQL Server, где типом является изображение

2 голосов
/ 08 апреля 2014

Я не скажу, что это плохая практика, это зависит от того, насколько большой образ и как ваше приложение использует его.

Если файл размером менее 256 КБ, хранение в дБ более эффективно; Более 1 мб, рекомендуется хранить в файловой системе.

Хранение изображений в SQL Server?

1 голос
/ 27 марта 2009

Простой ответ: остановите то, что вы делаете.

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

Хранение изображений или файлов в базе данных - это пустая трата файлового пространства, неправильное использование баз данных, и не позволяя вещам делать то, что они делают лучше всего; файловая система знает файлы, база данных знает данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...