Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP2.2和读取MS SQL二进制列_Php_Sql Server_Cakephp_Encoding_Pdo - Fatal编程技术网

CakePHP2.2和读取MS SQL二进制列

CakePHP2.2和读取MS SQL二进制列,php,sql-server,cakephp,encoding,pdo,Php,Sql Server,Cakephp,Encoding,Pdo,我最近接管了一个PHP/CakePHP项目。现在我想将框架从CakePHP1.3更新为CakePHP2.2。数据库服务器是MS SQL server(版本10.50)。我还尝试连接到SQL Server 9.0 SP1版。同样的问题。应用程序连接到DB服务器,可以很好地读取文本数据 如果我想读取blob/binary/image列,就会出现问题。这似乎是一个解码问题,但我不知道它会发生在哪里。在CakePHP1.3版本中,我看到如下内容 \x2 \x0\x1xÚmŽÁN„0\x10†_¥öN..

我最近接管了一个PHP/CakePHP项目。现在我想将框架从CakePHP1.3更新为CakePHP2.2。数据库服务器是MS SQL server(版本10.50)。我还尝试连接到SQL Server 9.0 SP1版。同样的问题。应用程序连接到DB服务器,可以很好地读取文本数据

如果我想读取blob/binary/image列,就会出现问题。这似乎是一个解码问题,但我不知道它会发生在哪里。在CakePHP1.3版本中,我看到如下内容

\x2 \x0\x1xÚmŽÁN„0\x10†_¥öN...
在CakePHP2.2版本中,我得到

0220000178DA6D8EC14E8430 ... 
存储的项是一个压缩的XHTML文件,附带了一些描述标记。它是由另一个应用程序编写的

我已将应用程序编码设置为UTF-8,并尝试在数据库配置中设置encoding='utf8'字符串(即使它只适用于MySQL)。我已从Microsoft更新了本机SQL客户端。我使用的是带有PHP5.3.8的XAMPP1.7.7安装。我还尝试了使用XAMPP1.8和微软新的SQL-PDO驱动程序进行不同的安装。没有任何帮助

我不知道这个问题是从哪里来的,即使我怀疑是PHP的PDO层/驱动程序

应用程序在CakePHP 1.3上运行良好。


谢谢你的帮助/时间

我已经知道了。这个问题是来自MS的PDO层中的一个已知错误。它可以通过litte函数修复

function hextostr($x) 
{
  $s='';
  foreach(explode("\n",trim(chunk_split($x,2))) as $h) $s.=chr(hexdec($h));
  return($s);
}
根据Marko Kozjak在