(转载)http://www.phpcode8.com/lamp/mysql-lamp/mysql-escape-slash.html
最近在执行一个sql备份的还原后,发现系统的部分路径找不到,于是开始debug,最后发现,是由于备份的sql语句在还原时,反斜杠(\)被mysql吃掉了。本文对反斜杠和顺斜杠进行了测试,并给出了解决方案。具体描述如下:
执行下面的sql语句:
INSERT INTO `test` VALUES('', 'document\101\1086.pdf', '101/1086.swf');
结果是:
('','document1011086.pdf','101/1086.swf')
反斜杠\被吃掉了。
顺斜杠/能够正常的插入表中。
如果我们确实想要存储反斜杠需要在sql语句中进行转义
INSERT INTO `test` VALUES('', 'document\\101\\1086.pdf', '101/1086.swf');
结果是:
('','document\101\1086.pdf','101/1086.swf')
由于本系统不需要存储反斜杠。而且系统数据量还不是很大,于是我用notepad++ 将(\)替换为(/)即解决了这个问题。