将数据指定为二进制的重点是简单地将二进制序列视为原始的、未修改的字节序列。
=>考虑到MySQL有BLOB, BINARY和VARBINARY数据类型,为什么不可能从php脚本中存储和检索任何任意二进制数据流,而不需要用mysql_real_escape_string或addslashes转义序列?
因为二进制数据仍然被序列化为字符串…因此,例如,假设您的$binary_data
具有值a 'b" c
。那么查询INSERT INTO foo VALUES $binary_data
将失败。
将数据指定为二进制的重点是简单地将二进制序列视为原始的、未修改的字节序列。
你错了。将数据指定为二进制的唯一目的是标记它不是字符集重新编码的主题。这是所有。
谁说这是不可能的?为什么不可能从PHP脚本存储和检索任何任意二进制数据流,而不需要用mysql_real_escape_string或addslashes转义序列?
存储和检索都是完全可能的。
预处理语句的全部意义在于将任意二进制流直接发送到mysql。
为什么有必要添加转义序列到二进制字符串时存储到MySQL数据库?
如果你在谈论SQL,你必须首先了解它是什么。
SQL是一种编程语言。因为任何语言都有自己的语法。
如果你要把原始二进制数据添加到这个程序中,你必须让这些数据满足这些规则。这就是逃避的目的。