Я использую драйверы PDO MSSQL (с большим трудом) для подключения к базе данных MSSQL. Я только что переехал из mssql_. У меня есть поле в таблице, которая представляет собой текстовый файл, который я использую для хранения файла. При необходимости поле извлекается и данные записываются на диск.
Он отлично работает с использованием драйверов mssql_, однако получение данных с помощью PDO (простое соединение без дополнительных параметров) каким-то образом повреждает файлы. Я знаю, что данные в порядке, так как у меня есть другие способы вывода и проверки, но мне нужно обойти эту проблему PDO.
Я пытался связать столбец как LOB безрезультатно
$stmt->bindColumn(1, $lob, PDO::PARAM_LOB);
Любые предложения, чтобы решить эту проблему?
Я нашел решение. Вам нужно связать столбец и указать, что он является двоичным 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);
Других решений пока нет …