使用PHP问题显示SQL Server数据库中的BLOB字段

使用PHP问题显示SQL Server数据库中的BLOB字段,php,Php,我在SQL Server 2012数据库中有一个数据库字段。它们可以包含PDF、WORD、Excel或图像文件。我的Blob字段类型是varbinary(max)。我的代码在使用ColdFusion时运行良好,但是我尝试将其转换为PHP,但它似乎不起作用。下面是我正在使用的代码。有人能告诉我我做错了什么吗? 下面的示例仅适用于word文档,当启动word应用程序时,我会看到一个“文件转换”对话框,要求我选择使文档可读的编码,所有这些都没有任何区别。预览窗口显示一堆垃圾 <?PHP $ase

我在SQL Server 2012数据库中有一个数据库字段。它们可以包含PDF、WORD、Excel或图像文件。我的Blob字段类型是varbinary(max)。我的代码在使用ColdFusion时运行良好,但是我尝试将其转换为PHP,但它似乎不起作用。下面是我正在使用的代码。有人能告诉我我做错了什么吗? 下面的示例仅适用于word文档,当启动word应用程序时,我会看到一个“文件转换”对话框,要求我选择使文档可读的编码,所有这些都没有任何区别。预览窗口显示一堆垃圾

<?PHP
$aserverName = "SQ-ENT12-D01\Dev";
$aconnectionInfo = array( "Database"=>"Event_Registration", "UID"=>$uid, "PWD"=>$pwd, "CharacterSet"=>"UTF-8");
$aconn = sqlsrv_connect( $aserverName, $aconnectionInfo);
//  Get the record where the binary data is 
$GetBlobSQL = "select * from Congress where Congress_ID = 102";
$GetBlob = sqlsrv_query($aconn, $GetBlobSQL, array(), array('Scrollable' => 'buffered'));
$GetBlobRecordCount = sqlsrv_num_rows($GetBlob);
$brec = sqlsrv_fetch_array( $GetBlob, SQLSRV_FETCH_ASSOC, SQLSRV_SCROLL_ABSOLUTE, 0);
$WhatFile = ($brec['Document_Agenda']);
$WhatBlob = ($brec['AD_Agenda']);
$MyExt = substr($WhatFile, -4);
$WhatExt = strtolower($MyExt);
header('Content-type: application/ms-word');
header('Content-Disposition: attachment; filename="'.$WhatFile.'"');
echo $WhatBlob;
?>

尝试从
$aconnectionInfo
中删除
“CharacterSet”=>“UTF-8”
。您可能会混淆数据库,导致发生不需要或不需要的转换

很抱歉,当我删除该代码时,出现了一个严重错误:致命错误:在第9行的C:\Inetpub\wwwroot\PHP\eventregistration\ViewTest.PHP中翻译Unicode时出现严重错误,然后尝试将其设置为UTF-16。