我正在从表单中将一些数据插入到数据库中.我正在使用addslashes来转义文本(也尝试了
mysql_real_escape_string,结果相同).
常规报价已转义,但其他一些报价则没有.例如,字符串:
Homer’s blood becomes the secret ingredient in Moe’s new beer.
转换为:
Homer\’s blood becomes the secret ingredient in Moe’s new beer.
我不认为卷曲引用无关紧要,但只有这个文本被插入到数据库中:
Homer’s blood becomes the secret ingredient in Moe
所以PHP认为卷曲的引用很好,但MysqL正在丢失字符串. MysqL虽然没有给出任何错误.
我会寻找Web界面中使用的字符编码与数据库级别使用的字符编码之间的不匹配.例如,如果您的Web界面使用UTF-8,并且您的数据库使用latin1的默认MysqL编码,那么您需要使用DEFAULT CHARSET = utf8设置表.
顺便说一下,使用MysqL_real_escape_string()或MysqLi. addslashes()不足以防止sql注入.