PDO повреждает MSSQL Данные текстового поля, используемые для хранения файла

Я использую драйверы PDO MSSQL (с большим трудом) для подключения к базе данных MSSQL. Я только что переехал из mssql_. У меня есть поле в таблице, которая представляет собой текстовый файл, который я использую для хранения файла. При необходимости поле извлекается и данные записываются на диск.

Он отлично работает с использованием драйверов mssql_, однако получение данных с помощью PDO (простое соединение без дополнительных параметров) каким-то образом повреждает файлы. Я знаю, что данные в порядке, так как у меня есть другие способы вывода и проверки, но мне нужно обойти эту проблему PDO.

Я пытался связать столбец как LOB безрезультатно

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

Любые предложения, чтобы решить эту проблему?

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);
0

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

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