说明:magic_quotes_gpc,magic_quotes_runtime都是off。
问题:往数据库中写数据时,先应用addslashes对数据(因为数据带有',")进行了处理,然后用php将刚写入的数据读出(不进行stripslashes处理),却发现数据中不带转义符号'\',
      从mysql的控制台进入查看数据,发现里面的数据竟然同样不带转义字符'\'。
      但将数据表导出成sql文件,在文件里竟然发现数据是带转义符号'\'的。
      这是怎么回事啊?我想数据库中的数据应该是带转义符号'\'的吧。只是不知道为什么php和mysql控制台读出的数据都不带转义符号??
      高手指教。谢谢!
      

解决方案 »

  1.   

    你的观察很细致。不过,可以肯定地说,这些现象都是正常的,就应该是这样,不这样才会出问题呢 :)比如你说的“从mysql的控制台进入查看数据,发现里面的数据竟然同样不带转义字符'\'”,那当然啦,“转义字符”的用处就是把“被转义的字符”送到数据库里去,如果连“转义字符”一起存进去,那成什么了?
      

  2.   

    转义的目的是告知处理者我的这个是单纯的字符,没有其他意义
    sql 指令要求字符串用单引号括起,那么字符串中的单引号就要转义。不然会被当做字符串边界了
    存入到数据库的是字符串本身,当然也就没有了转义符“\”
      

  3.   

    magic_quotes_gpc=off的情况下对存入数据库的内容进行addslashes处理的'\'不会存入数据库。取出来时也就不需要进行stripslashes,
    magic_quotes_gpc=on的情况下存入数据不需要进行addslashes处理。取出数据也不需要stripslashes.如果进行addslashes处理。\斜杠会被存入数据库,取出时需要进行stripslashes处理。
      

  4.   

    是吗?没注意过,不应该如此。除非导出的是SQL语句
    如果是,也是为了再导入
      

  5.   

    哦。对了,导出的是sql语句。谢谢指点。