我使用此代码从数据库中获取值并根据需要插入所有本地 sqllite/html5 表中。该脚本将无法运行,因为它不断给出此错误:
语句中的“?”数与参数计数不匹配。
但是,当我使用 console.log 输出结果字符串并在同一代码块中运行结果时,它确实可以毫无问题地执行。我在这里做错了什么?这是我的简单代码:
pg.get_latest_game_data = function (table_name) {
if (onlinecheck() == true) {
$.post("http:/mysite.com/get_latest_games.php", {
func: table_name
}, function (data) {
pg.db.transaction(function (tx) {
$.each(data, function (i, item) {
//clear the variables upon loop
columns = "";
values = "";
qs = ""
$.each(item, function (k, v) {
//concatenate the strings
columns += "`" + k + "`,";
values += "'" + v + "',";
qs += "?,";
});
//remove last characters from strings
columns = columns.slice(0, -1);
values = values.slice(0, -1);
qs = qs.slice(0, -1);
console.log('tx.executeSql("INSERT INTO ' + table_name + ' (' + columns + ') VALUES (' + qs + ')", [' + values + '],null,null)');
tx.executeSql("INSERT INTO " + table_name + " (" + columns + ") VALUES (" + qs + ")", ["+values+"], null, pg.onError);
});
});
}, "json");
}
}
编辑解决方案:最后我得到了这个工作:
tx.executeSql("INSERT INTO "+table_name+" ("+ columns +") VALUES ("+values+")", [],null, pg.onError);