Столбец UPDATE VARBINARY (MAX) в таблице SQL Server с загрузкой изображения $ _FILE

Я искал по всему Интернету помощь по этому вопросу и ничего не нашел.

В основном мне нужно знать, как обновить SQL Server VARBINARY(MAX) столбец с шестнадцатеричным изображением, загруженным из HTML-формы. База данных находится в другом месте, чем форма HTML, поэтому move_uploaded_file в PHP тогда OPENROWSET (BULK ...) в SQL не работает (не удается найти файл).

Я тоже пытался делать file_get_contents на загруженных $_FILE['name_']['tmp_name'], то использовал unpack("H*hex") и поместите результат этого в столбец SQL с добавлением «0x», но это дает сбой, говоря, что его нужно преобразовать из VARCHAR к VARBINARY, Когда я конвертирую его, код запускается и столбец заполняется, но изображение искажено.

Не знаю, что делать дальше. Пожалуйста, помогите.

0

Решение

Решение:

Это базовый подход с использованием PHP драйвер для SQL Server:

Создание таблицы (T-SQL):

CREATE TABLE [dbo].[ImageTable] (
[ImageData] varbinary(max) NULL
)

PHP:

<?php
# Connection
$server = 'server\instance,port';
$database = 'database';
$uid = 'user';
$pwd = 'password';
$cinfo = array(
"Database" => $database,
"UID" => $uid,
"PWD" => $pwd
);
$conn = sqlsrv_connect($server, $cinfo);
if( $conn === false )
{
echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
exit;
}

# Update image using CONVERT()
$image = file_get_contents('image.jpg');
$sql = "UPDATE ImageTable SET [ImageData] = CONVERT(varbinary(max), ?) WHERE (yor_update_condition)";
$params = array(
array($image, SQLSRV_PARAM_IN)
);
$stmt = sqlsrv_query($conn, $sql, $params);
if ($stmt === false) {
echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
exit;
}

# End
echo 'Image updated.'
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]