0

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

使用 mssql_ 驱动程序可以正常工作,但是使用 PDO(纯连接无附加参数)检索数据会以某种方式损坏文件。我知道数据没问题,因为我有其他输出和检查方式,但我需要解决这个 PDO 问题。

我尝试将列绑定为 LOB 无济于事

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

有什么建议可以解决这个问题吗?

4

1 回答 1

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);
于 2015-08-22T13:24:05.737 回答