最近邮件系统出了bug,是将邮件插入数据库失败,导致玩家的邮件丢失。
这样当然没有问题,可是有些玩家却偏偏喜欢发些复杂的东西,像这样的
后果很严重,原因却很简单。
想出来2个办法:
一个是将字符串类型都转成二进制数据来插入,因为二进制是不用管符号的。这样写代码的时候简单了,可是如果要直接从数据库操作来读取这段数据,而不是通过程序重新转换成字符串,读出来的东西基本是看不懂的。
还有一个,是在插入数据库之前,将字符串中的""符号通通解析一边,用转义符"\""来替换掉,呵呵,更喜欢这个方式
本来sql语句是:
insert into mail(ID,SOURNAME,DESTNAME,TAXT) values(1,"aaa","bbb","祝贺升级!!!!");这样当然没有问题,可是有些玩家却偏偏喜欢发些复杂的东西,像这样的
insert into mail(ID,SOURNAME,DESTNAME,TAXT) values(1,"aaa","bbb","祝贺升级!!!! "^-^"");
表格里的字符串部分本来是用""包含的,可是玩家邮件正文的字符串里也包含了""这个符号,就像这样 "祝贺升级!!!! "^-^"",这样的会导致整条语句插入数据库失败后果很严重,原因却很简单。
想出来2个办法:
一个是将字符串类型都转成二进制数据来插入,因为二进制是不用管符号的。这样写代码的时候简单了,可是如果要直接从数据库操作来读取这段数据,而不是通过程序重新转换成字符串,读出来的东西基本是看不懂的。
还有一个,是在插入数据库之前,将字符串中的""符号通通解析一边,用转义符"\""来替换掉,呵呵,更喜欢这个方式