如何使用PEAR在SQL Server中保存二进制数据

时间:2014-06-10 09:19:02

标签: php pear

如何插入SQL' Image'使用PEAR DB库和sql的字段如下:

insert into MyTable (myBlob) values (BlobData)

使用file_get_contents获取BlobData,如下所示:

"BMN\x0\x0\x0\x0\x0\x0\x06\x0\x0\x0(\x0\x0\x0\x2\x0\x0\x0\x3\x0\x0\x0\x1\x0\x18\x0\x0\x0\x0\x0\x18\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0ÿÿÿÿÿÿ\x0\x0\x0\x0ÿÿÿÿ\x0\x0ÿÿÿÿÿÿ\x0\x0"

我得到语法错误,猜测我需要以某种方式逃避数据。 Php代码:

$data = file_get_contents('c:\\temp\\test.bmp');
$sql = "insert into MyTable (myBlob) values ('".$data."'); //just using inline sql for now to get it working
$db->query($sql);

1 个答案:

答案 0 :(得分:0)

我发现使用bin2hex并将二进制数据写成十六进制字符串有效:

$FileDataBin = file_get_contents($myFile);
$FileDataHex = '0x'.bin2hex($FileDataBin);

$qry = 'update MyTable set SomeBinaryField = '.$FileDataHex.' where SomeOtherField=?';
$DB->query($qry, array('some data'));

注意' 0x'前缀,数据周围没有引号。