php mysql 二进制_php中如何存取mysql中的二进制数据

你的位置:

问答吧

-> PHP基础

-> 问题详情

php中如何存取mysql中的二进制数据

因为存入的二进制数据要打入sql语句。所以存入前需要用函数将二进制数据中特殊字符过滤掉。以免数据破坏sql语句。

从mysql中读取数据后没有做任何处理。这样的数据根本不是二进制数据了啊。(0x00、0x1a之类的东西都被过滤掉了)

从网上看到将图片以二进制方式存入数据库。也是这样。

(http://www.anyexample.com/programming/php/php_mysql_example__image_gallery_(blob_storage).xml)

问题一:我就不明白了。这样读出的图片应该产生错误啊。(图片也是二进制文件,过滤会破坏它啊)

问题二:php中到底能不能存取mysql中的二进制数据。如果能。如何操作才能保证存入前与读出后的数据一样啊。如果不能保证,存取二进制数据还有什么意义呢?

作者: yl0002

发布时间: 2010-09-19

存入前需要用函数将二进制数据中特殊字符过滤掉 ???

如果过滤掉了,还能保持完整性吗?

只需将内容中的 “'”加上转义符“\”,即转变成“\'”

作者: xuzuning

发布时间: 2010-09-19

引用 1 楼 xuzuning 的回复:

存入前需要用函数将二进制数据中特殊字符过滤掉 ???

如果过滤掉了,还能保持完整性吗?

只需将内容中的 “'”加上转义符“\”,即转变成“\'”

二进制中会有0x00

0x00也是字符串的结束符

不过滤,会将字符串截断。

还有很多其它数值,不要说进入数据库了。连进字符串都不行。

下面是过滤函数

mysqli_real_escape_string

Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and Control-Z.

stripslashes过滤\\

...

作者: yl0002

发布时间: 2010-09-19

应该是“转义”,而不是“滤掉”!

通过“转义”,可以在字符串中表达任何字符。

--------

With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is

hard to be sure where they are going to land, and it could be dangerous sitting under them as they

fly overhead.

出自 RFC1925 - The Twelve Networking Truths

————————————————————————————————

基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)

作者: maquan

发布时间: 2010-09-19

引用 3 楼 maquan 的回复:

应该是“转义”,而不是“滤掉”!

通过“转义”,可以在字符串中表达任何字符。

--------

With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is

hard to be sure where they are going to land, an……

如果是转义。php应该提供相应的反转义函数。

但我没找到相应反转义函数。

我自己做过试验:

mysqli_real_escape_string处理

存入数据库

从数据库中读取

存入文件

原始数据是exe文件。结果读出的数据少了几百字节。

如果是转义。应该多几百字节啊。

要将255种字符中某些字符转义。最终字符集至少多于255啊。不然转义符就与原字符集中的字符重复了啊。

所以我觉得是过滤掉了。

作者: yl0002

发布时间: 2010-09-19

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值