UOBntu Linux和Windows Server上的BLOB字段不一样

时间:2017-11-02 12:09:35

标签: php sql-server linux ubuntu windows-server-2012

我在ubuntu linux 16.04服务器的MSSQL Server上运行此查询:

SELECT binaryImage FROM mytable;

好吧,我已经检索了我的图像的二进制内容,并且在PHP中使用base64_encode()函数可以显示图像。

"<img src='data:image/jpeg;base64,".base64_encode($binaryImage)."'/>"

效果很好。

但是当我在同一个数据库上运行相同的查询但是从Windows Server 2012 R2运行时,二进制内容不同,并且无法显示图像。

另外,我做了var_dump()以查看在每种情况下检索哪些二进制内容,并且在Linux和Windows Server上有所不同。在im使用sqlsrv_pdo for php7。

我不知道发生了什么......我需要在Windows Server 2012 R2上运行。也许是编码或类似的东西?感谢。

编辑:左侧是Linux上的二进制内容,右侧是Windows Server上的二进制内容。在Linux上,它有~1.000.000个字符长度,在Windows上,如~2.000.000

enter image description here

EDIT2:连接信息。

$database = [
    'ServerName' => 'localhost',
    'Database' => 'db',
    'UID' => 'user',
    'PWD' => 'pass',
    'CharacterSet' => "UTF-8"
];

$conn = new PDO(
    "sqlsrv:server={$database['ServerName']};Database={$database['Database']}",
    $database['UID'],
    $database['PWD'],
    array(
        //PDO::ATTR_PERSISTENT => true,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    )
);

0 个答案:

没有答案