我正在尝试开发一个Android应用程序,这个脚本将在我的手机上复制一个数据库表,但在执行后他会在下面显示这个错误
//---------------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,msg接近“accunedifined”:语法 错误
答案 0 :(得分:1)
看起来该声明无效。你只需添加字符串,甚至使用函数mysql_real_escape_string
,这是一个PHP函数,除非你在Javascript中定义它。如果这些字符串中的任何一个包含无效字符,尤其是'
,则您的语句将变为无效。
最好的办法是找到一种查看生成的SQL的方法。您可能会立即发现错误,但如果没有,您可以在此处发布生成的SQL,以便我们查看。
答案 1 :(得分:0)
您可能希望console.log获取result
数组值。我认为你有可能某些值包含一个使字符串SQL无效的引号。在结果中查找'accunedifined
答案 2 :(得分:0)
将PHP代码复制到JavaScript后删除mysql_real_escape_string
。
答案 3 :(得分:0)
在你mysql_real_escape_string
中,添加一些逻辑来复制单引号:
// Note: replaceAll doesn't work, you need to implement it
str = str.replaceAll("'","''");
一些replaceAll
想法:
Replace all strings in dom element