我阅读了有关在数据库中存储图像的教程。在教程中,作者在插入前对二进制数据中的特殊字符进行了转义: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) 如果是这样,那么,我们是否不需要再次“取消转义”字符以正确显示图像? (如果是这样,最好的方法是什么。关于效率有什么评论吗?对于大图像:转义和取消转义可能是一个很大的开销?)。
还是我对转义的理解完全错误(转义只影响查询而不影响插入/存储的最终数据?)。
谢谢
日本
最佳答案
你对转义的理解是错误的。插入数据库的数据被转义,以便查询解析器按预期查看信息。
以字符串“Jean-Luc 'Earl Grey' Picard”为例。
转义结果为:'Jean-Luc\'Earl Grey\' Picard'
MySQL收到这个,就明白转义的引号需要按字面意思,就是转义的意思,就会存入数据库。它不会将转义字符存储在数据库中。\向 MySQL 表明它应该按字面意思接受它后面的字符。
检索时,数据会在没有转义字符的情况下呈现给您的应用程序,因为它们在解析查询时会被删除。
关于PHP-Mysql : storing images in DB - escaping special characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569745/