(转载)MySQL中执行sql语句反斜杠需要进行转义否则会被吃掉

时间:2023-12-16 17:06:50

(转载)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++ 将(\)替换为(/)即解决了这个问题。