SQLite:不匹配参数计数

时间:2013-11-05 22:22:53

标签: jquery html5 sqlite

我使用此代码从数据库中获取值,并根据需要插入所有本地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); 

2 个答案:

答案 0 :(得分:1)

尝试记录insert语句,而不是整个语句

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);

但是将日志更改为insert语句。

console.log("INSERT INTO " + table_name + " (" + columns + ") VALUES (" + qs + ")");

在一天结束时,错误是说您要插入的列与您传入的数据不匹配。请检查语句。

答案 1 :(得分:0)

   self.db.transaction(function (tx) {

    tx.executeSql(query, columnsValue, function (tx) {
            // console.log(query);
            // console.log(columnsValue.join(","));

        },
        function (tx, error) {
            console.log('UPDATE error: ' + error.message);
        });

    }, function (error) {
    console.log('transaction error: ' + error.message);
    }, function () {
    console.log('transaction ok');
    });