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 (将#修改为@)