在将内容保存到mysql数据库时发出撇号“'”

时间:2013-03-01 09:07:15

标签: php javascript mysql

我正在开发一个允许用户创建html模板并保存它们的应用程序。用户可以使用不同的组件,如文本,图像等,并创建html页面。

问题:我遇到的问题是,当用户输入带有撇号 '的文字时,我收到了一个mysql错误(很明显它应该)。所以,我将mysql_real_escape_string添加到变量中,然后将其传递给查询。它可以正常工作,但我希望数据返回给用户编辑网站。当我尝试获取它时返回时,如果返回的内容添加了斜杠,则会出现错误 我无法使用stripslashes,因为我的内容可能会在用户输入的文本中包含斜杠。

这是将它添加到数据库的方式:

 $revisionContent = mysql_real_escape_string($_POST['txtComp']);

这是查询

  $query = "insert into revision (userId,revisionContent,webId,pageId,status,saveType,dateAdded) values ('".$_SESSION['gogiUserId']."','$revisionContent','$webId','$pageId','$status','$saveType','$toDate')";         

我希望在 javascript 变量中检索到的值,所以我这样做

 var getSavedContent = '<?php echo json_encode($IdLessContent); ?>';

但后来我得到了这个错误!

    SyntaxError: missing ; before statement
     [Break On This Error]  
     ...helvetica,sans-serif;\"><strong>Text **Bo'x**(here is the apostrophe)<\/strong><\/span><\/span><\/p>\n<ol>\n...

如果我删除json_encode,则会出现语法错误。

   SyntaxError: syntax error
   [Break On This Error]     
   var getSavedContent = <div style="z-index: 1001; height: 241px; width: 725px; to...

1 个答案:

答案 0 :(得分:2)

这与MySQL无关。直到您从中获取数据后才能开始解决问题。

您正在使用一个数据结构,其中可能包含撇号,将其转换为JSON,然后通过在其周围包装引号将该JSON文本转换为JavaScript字符串。

由于JSON(或多或少)是JavaScript的一个子集,因此您可以通过跳过“转换为JS字符串”和“将JSON的字符串解析为JS对象”步骤来处理此问题。

删除引号:

 var getSavedContent = <?php echo json_encode($IdLessContent); ?>;