使用JS将字符串插入SQLite,不会出现语法错误

时间:2013-10-08 13:30:12

标签: javascript jquery mysql sqlite cordova

我正在使用JavaScript API从Google Feeds API中获取一些内容,并尝试将它们插入到Phonegap应用中的SQLite数据库中。

但是由于获取的内容字符串中没有转义和特殊字符,我得到了很多语法错误。因为内容字符串包含HTML代码及其属性及其值在引号内。

任何人都可以帮我解决这项任务吗? 有人可以建议我使用诸如addslashes,htmlentities,htmlspecialchars之类的PHP函数吗?让我知道这种插入的正确方法。只有JS。

例如: 插入变量“content”是一个带有<div id="test" style="color:#000;">I'm tall and I'm "26" now.</div>的字符串,需要将其插入到列中,html内容没有任何错误。

var content = <div id="test" style="color:#000;">I'm tall and I'm "26" now.</div>
tx.executeSql("INSERT INTO MyTable(id, Content) VALUES ('1',content)");

变量“content”具有单引号和双引号,并且它还可以包含许多特殊字符。因此,在插入数据库之前必须格式化内容变量。

3 个答案:

答案 0 :(得分:1)

要在SQL语句中使用任意字符串值,请使用参数:

var content = "!'§$%&/()=?+*~#|<...";
...
tx.executeSql("INSERT INTO MyTable(ID, Name, Content) VALUES(?,?,?)",
              [123, "Some Name", content]);

答案 1 :(得分:0)

我认为在http://phpjs.org/functions/htmlentities/

中添加数据库之前,我找到了格式化js字符串的答案

答案 2 :(得分:0)

可能会低于代码帮助你。

var db = window.sqlitePlugin.openDatabase("Databases", "1.0", "XYZ", 1000000);  

db.transaction(function(tx) {
   var content = $("#test").html();

   tx.executeSql("INSERT INTO MyTable (id, Content) VALUES(?,?)",['1',content], querySuccess, errorCB);         
}, errorCB);


<body>
   <div id="test" style="color:#000;">I'm tall and I'm "26" now.</div>
</body>