-2

私はアンドロイドアプリケーションを開発しようとしています.このスクリプトは私の携帯電話にデータベーステーブルをコピーしますが、実行後、彼はこのエラーを以下に表示します.

//---------------Copier-------------------------    

 $.ajax({
         type: "POST",
         url: "http://10.0.2.2:1998/bYzance_web_service/get_all_PhrasesTypes.asmx/Get_all_PrasesTypes",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         async : false,
         success: function (data)
          {
             alert("success: function (data)");

             var result = $.parseJSON(data.d); 

             alert(result[0].Phrase);

             for (i = 0; i < result.length; i++) 
             {                 
                 tx.executeSql("INSERT INTO PhrasesTypes (idPhrase,idPhraseES,idRubrique,idTypeTravauxAffichage,Phrase,AidePhrase,AvertissementPhrase,OrdrePhrase,QuotationParDefaut,Published)"
+  " VALUES ('"+result[i].IdPhrase+"',' "+result[i].IdPhraseES+" ',' "+result[i].IdRubrique+" ',' "+result[i].IdTypeTravauxAffichage+" ','"+mysql_real_escape_string(result[i].Phrase)+"',' "+result[i].AidePhrase+" ',' "+result[i].AvertissementPhrase+" ','"+result[i].OrdrePhrase+"','"+result[i].QuotationParDefaut+"','"+result[i].Published+" ')");
       console.log(i);
    }

         },
         error: function (e)
          {
            alert("URL du web service:  "+serviceURL+"get_all_PhrasesTypes.asmx/Get_all_PrasesTypes");

         }

     });//fin Ajax

sqlite が返されました: エラー コード =1、"accunedifined" 付近のメッセージ: 構文エラー

4

4 に答える 4

1

ステートメントが無効のようです。mysql_real_escape_stringJavascript で定義していない限り、文字列を追加するだけでなく、PHP 関数である function を使用することもできます。これらの文字列のいずれかに無効な文字、特に が含まれている場合'、ステートメントは無効になります。

最善の方法は、生成された SQL を表示する方法を見つけることです。おそらくすぐにエラーを見つけることができますが、そうでない場合は、生成された SQL をここに投稿してください。

于 2012-11-02T10:24:34.817 に答える
0

youmysql_real_escape_stringで、一重引用符を複製するロジックを追加します。

// Note: replaceAll doesn't work, you need to implement it
str = str.replaceAll("'","''");

いくつかのreplaceAllアイデア: dom 要素のすべての文字列を置き換えます

于 2012-11-02T11:32:43.023 に答える
0

result配列の値を console.log に記録したい場合があります。一部の値に一重引用符が含まれているため、文字列 SQL が無効になる可能性があると思います。結果で a を探し'accunedifinedます

于 2012-11-02T10:23:25.523 に答える
0

mysql_real_escape_stringPHP コードを JavaScript にコピーした後に削除します。

于 2012-11-02T10:23:30.377 に答える