PHP sqlsrv поле вставки / чтения BLOB-объектов (varbinary) из примера базы данных

Я опубликую этот пример для всех, кому нужна помощь с вставкой файла в поле varbinary (max) в базе данных sqlsrv.
Также, если вам нужно читать из поля varbinary, вы можете посмотреть, как я это сделал.
Этот код работает, но все ваши комментарии и предложения приветствуются.
Это образец таблицы:

CREATE TABLE [dbo].[files]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[content] [varbinary] (max) NULL,
[filename] [varchar] (max) COLLATE Croatian_CI_AS NULL
)

Сначала введите свои данные для сервера, который вы используете.
Если вам нужно вставить файл в поле varbinary в db:

<?php
$server = "";
$konekcionistring = array( "Database"=>"", "UID"=>"", "PWD"=>"");
$konekcija = sqlsrv_connect( $server, $konekcionistring);

$newfileName = 'testX.pdf';
$newtmpName  = 'C:\xampp\htdocs\testX.pdf';

$fp = fopen($newtmpName, 'rb');
$file_content = fread($fp, filesize($newtmpName));
fclose($fp);

$sql = "INSERT INTO files ([content],[filename]) SELECT CONVERT(VARBINARY(MAX),?),?";

$parametri = array(
array($file_content),
array($newfileName)
);
$r_blob = sqlsrv_query($konekcija, $sql, $parametri);

if( $r_blob === false)
{
die( print_r( sqlsrv_errors(), true) );
}
?>

Когда вам нужно прочитать данные из файла varbinary, хранящегося в БД, вы можете использовать этот код:

<?php
$server = "";
$konekcionistring = array( "Database"=>"", "UID"=>"", "PWD"=>"");
$konekcija = sqlsrv_connect( $server, $konekcionistring);

$skript = "SELECT F.content, F.filename AS Template FROM dbo.files AS F";

$izvrsiSQL = sqlsrv_query($konekcija, $skript);
$result = sqlsrv_fetch_array($izvrsiSQL, SQLSRV_FETCH_ASSOC);
$filename = $result['filename'];
$X = $result['content'];header("Content-type:application/pdf");
header('Content-Disposition: attachment inline; filename="'.$filename.'"');
echo $X;
?>

Если у вас есть какие-либо комментарии или предложения, пожалуйста.

2

Решение

Задача ещё не решена.

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

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

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