为什么在存储到MySQL数据库时需要将转义序列添加到二进制字符串中?

时间:2011-10-01 18:08:29

标签: php mysql

将数据指定为二进制的全部要点是简单地将二进制序列视为原始的,未触及的字节序列。

=>鉴于MySQL有BLOB,BINARY和VARBINARY数据类型,为什么不能从php脚本存储和检索任何二进制数据流而不需要使用mysql_real_escape_string或addslashes转义序列?

2 个答案:

答案 0 :(得分:6)

因为二进制数据仍然序列化为字符串...例如,假设您的$binary_data具有值a 'b" c。然后查询INSERT INTO foo VALUES $binary_data将失败。

答案 1 :(得分:3)

  

将数据指定为二进制的全部要点是简单地将二进制序列视为原始的,未触及的字节序列。

你错了。
将数据指定为二进制的唯一要点就是将其标记为不是字符集重新编码的主题。就这样。

  

为什么不能从php脚本存储和检索任何二进制数据流而不需要使用mysql_real_escape_string或addslashes转义序列?

谁说这不可能?
存储和检索都很有可能 预处理语句的重点是将任意二进制流直接发送到mysql。

  

为什么在存储到MySQL数据库时需要将转义序列添加到二进制字符串?

如果你在谈论SQL,你必须先了解它是什么 SQL是一种编程语言 并且任何语言都有自己的语法 如果您要将原始二进制数据添加到此程序,则必须使此数据满足这些规则。这是逃避的。