关于一个编辑器插入数据库需要转义的问题

来源:互联网 发布:海岛大亨5 mac 迅雷 编辑:程序博客网 时间:2024/05/21 14:03

今天客户的网站遇到一个不能编辑的问题  刚开始把sql打印出来在自己的phpmyadmin里面跑了一个   很奇怪的不报错还成功  很是不解

然后再网上搜了半天没找到解决办法   最后看到一个解决办法  还是可以的  

报错如下:
       You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">“这边因个人网站的内同不同而变”
       (你在你的sql语句句法上有一个错误,仔细检查帮助手册,用右面的句法(略)是否符合你的数据库服务器版本)
       经过请教别人才知道是执行的sql语句里面有单引号、双引号 就把sql语句隔断了,所以才导致数据部能入库
      
       我用mysql_reql_escape_string();和addcslashes()对要提交的详细内容进行了下处理
            $desc = mysql_real_escape_string(addcslashes($desc));
            结果问题解决了,
      分析:string mysql_real_escape_string ( string unescaped_string [, resource link_identifier] )
            本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。
            所以有些提交的数据里面有可能带有特殊字符,可能导致mysql_query()函数的执行不安全,因此就不能执行成功了。 
       注: mysql_real_escape_string() 并不转义 % 和 _。

            string addcslashes ( string str, string charlist )
           返回字符串,该字符串在属于参数 charlist 列表中的字符前都加上了反斜线。此函数对 \n、\r 等进行转义。像 C 那样,ASCII 码低于 32 以及高于 126 的字符均转换成使用八进制表示。


0 0