带有MSSQL的Php显示来自varbinary字段的原始数据

时间:2012-02-02 16:04:10

标签: php sql-server varbinary

我试图在php中的SQL server中的varbinary字段中显示原始数据。我想准确地返回我在SQL Server中的内容(0x00000etc。),但它似乎正在进行某种转换并返回给我一些类似的东西,例如,T?òaýCž«V°Ø'©O

希望这对某人有意义。

谢谢

2 个答案:

答案 0 :(得分:3)

打印出的数据在浏览器中输出时始终被解释为字符数据。如果您需要精确的HEX或BIN数据表示,则需要在使用以下方法选择数据时进行转换:HEX()

SELECT HEX(mydata) as hexdata FROM mytable ...

当你输出它时,它现在将是一串HEX字符。我认为有一个等价的二进制格式输出0和1但我不确定...

如果你无法在mysql级别转换数据(可能有很多原因)那么你可以使用PHP等价的bin2hex:

echo bin2hex($mydata['mybinarydata'];

bin2hex的文档可在以下位置找到:http://www.php.net/bin2hex

祝你好运

答案 1 :(得分:0)

避免SQL注入和utf8转换错误的更安全解决方案:

public function setFileContentAttribute($value)
    {
        if ('sqlsrv' === config('database.default')) { // todo or some other way to check if its sql server connection
            return $this->attributes['file_content'] = DB::raw('CONVERT(VARBINARY(MAX), 0x' . bin2hex($value) . ')');
        }
        return $this->attributes['file_content'] = $value;
    }