PDO破坏用于存储文件的MSSQL文本字段数据

时间:2015-08-22 12:57:05

标签: php sql-server pdo data-corruption

我使用PDO MSSQL驱动程序(很难)连接到MSSQL DB。我刚刚从mssql_搬了。我在表中有一个字段,这是一个用于存储文件的文本文件。需要时,将检索字段并将数据写入磁盘。

使用mssql_ drivers可以正常工作,但是使用PDO检索数据(普通连接没有其他参数)会以某种方式破坏文件。我知道数据没问题,因为我有其他的输出和检查方法,但我需要解决这个PDO问题。

我尝试将列绑定为LOB无效

$stmt->bindColumn(1, $lob, PDO::PARAM_LOB);

有任何解决此问题的建议吗?

1 个答案:

答案 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);