我使用PDO MSSQL驱动程序(很难)连接到MSSQL DB。我刚刚从mssql_搬了。我在表中有一个字段,这是一个用于存储文件的文本文件。需要时,将检索字段并将数据写入磁盘。
使用mssql_ drivers可以正常工作,但是使用PDO检索数据(普通连接没有其他参数)会以某种方式破坏文件。我知道数据没问题,因为我有其他的输出和检查方法,但我需要解决这个PDO问题。
我尝试将列绑定为LOB无效
$stmt->bindColumn(1, $lob, PDO::PARAM_LOB);
有任何解决此问题的建议吗?
答案 0 :(得分:0)
我找到了解决方案。您需要绑定列并指定它是二进制PDO::SQLSRV_ENCODING_BINARY
$stmt = $PDORecipeCONN->prepare("Select FileDataField from Documents where VersionID= :Ver");
$stmt->execute(array(':Ver' => $fileid));
$stmt->bindColumn(1, $Data , PDO::PARAM_LOB,0,PDO::SQLSRV_ENCODING_BINARY);
$stmt->fetch(PDO::FETCH_BOUND);
$fp = fopen($fileid . '_file.doc', 'w');
fwrite($fp, $Data);
fclose($fp);