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