5 php mysql security mysql-real-escape-string binary-data
我阅读本教程关于在DB中存储图像.在本教程中,作者在插入之前转义二进制数据中的特殊字符:http://www.phpriot.com/articles/images-in-mysql/7 (addslashes尽管使用虽然mysql_real_escape_string更好 - 但这是另一个问题).
关键是,在显示时,他只显示存储的数据:http://www.phpriot.com/articles/images-in-mysql/8
我的问题:
1)我们是否需要转义特殊字符,即使对于二进制字段类型(blob)?
2)如果是这样,那么,为了正确显示图像,我们不需要再次"取消"字符吗?(如果是这样,最好的方法是什么.关于效率的任何评论?对于大图像:转义和转移可能是一个很大的开销?).
或者我对转义的理解是完全错误的(转义只会影响查询,而不会影响插入/存储的最终数据?).
谢谢
J.P
你对逃避的理解是错误的.插入数据库的数据将被转义,以便查询解析器按预期查看信息.
拿字符串"Jean-Luc'Earl Gray'Picard".转义结果为:'Jean-Luc \'Earl Grey\' Picard'
当MySQL接收到它时,它理解转义引号需要从字面上理解,这就是转义的意思,并将它们存储在数据库中.它不会将转义字符存储在数据库中.\表明它应该从字面上取下它后面的字符.
检索时,数据会在没有转义字符的情况下显示给您的应用程序,因为在解析查询时它们会被删除.