У меня есть поле varbinary(MAX) в базе данных SQL Server 2005. Я пытаюсь понять, как вставить двоичные данные (например, изображение) в это поле с помощью PHP. Я использую ODBC для подключения к базе данных SQL Server. Я видел ряд примеров, которые объясняют это для использования с базой данных MySql, но мне не удалось заставить его работать с SQL Server. Спасибо.
Вставьте двоичные данные в SQL Server с помощью PHP
Ответы (3)
Простой ответ: прекратите то, что вы делаете.
Вы не хотите хранить двоичные файлы внутри базы данных, если у вас нет особых проблем с безопасностью. Вместо этого вы хотите сохранить их имена файлов (возможно, переименовать файлы, чтобы предотвратить конфликт), а затем сохранить их в базе данных. Если безопасность является проблемой, поместите их в не веб-папку и используйте свой код для извлечения файла и обслуживайте файл только в том случае, если у пользователя есть к нему доступ.
Хранение изображений или файлов внутри базы данных — это пустая трата файлового пространства, неправильное использование баз данных и не позволять вещам делать то, что они делают лучше всего; файловая система знает файлы, база данных знает данные.
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, где тип — изображение.
Я не скажу, что это плохая практика, это зависит от размера изображения и от того, как оно используется вашим приложением.
Если размер файла меньше 256 КБ, более эффективно хранить в БД; Более 1 Мб, рекомендуется хранить в файловой системе.
Хранение изображений в SQL Server?