微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP:无法将转换后的二进制值保存到SQL Server数据库中隐式转换错误

如何解决PHP:无法将转换后的二进制值保存到SQL Server数据库中隐式转换错误

我试图以二进制格式将映像写入sql Server数据库,但没有成功。从前端(AngularJS)上传到服务器(PHP)的图像是Base64字符串,然后我需要将其转换为以0x开头的原始二进制文件,因为数据库需要{{1 }}数据类型。

我尝试的所有操作似乎都将值括在单引号中,因此尝试将其解析为varchar并导致错误

一般错误:20018不允许从数据类型varchar(max)隐式转换为varbinary(max)。

我当前的代码段:

varBinary(max)

似乎总是用单引号引起,我不知道该如何解决

$img = (binary) '0x'.strtoupper(bin2hex($photo['PhotoImage']));

更新

经过一番游戏后,我找到了问题所在,我只是不知道如何解决

此声明:

PhotoImage='0x6956424F5277304B47676F414141414E53556845556741414156414141414651434141414141444D67336B464'

(对我来说)应该向我返回一个二进制值,实际上仍在返回字符串,因此为什么我的S-PROC失败了:

$img = (binary)('0x' . bin2hex($photo['PhotoImage']));
dd(gettype($img));

此外,作为一个小测试,似乎PHP无法声明一个真正的二进制文件

...
"<span class=sf-dump-str title="6 characters">string</span>"
</pre><script>Sfdump("sf-dump-1548954697")</script>
...

如何强制PHP将这个值转换为真正的二进制文件

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。