1

ユーザーが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...
4

1 に答える 1

2

これは MySQL とは関係ありません。問題は、そこからデータを取得するまで始まりません。

アポストロフィが含まれている可能性があるデータ構造を取得して JSON に変換し、その JSON テキストを引用符で囲んで JavaScript 文字列に変換します。

JSON は (多かれ少なかれ) JavaScript のサブセットであるため、「JS 文字列に変換する」および「JSON の文字列を解析して JS オブジェクトにする」手順をスキップすることで、この問題に対処できます。

引用符を削除します。

 var getSavedContent = <?php echo json_encode($IdLessContent); ?>;
于 2013-03-01T09:14:34.853 に答える