0

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

2 回答 2

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

但是将您的日志更改为插入语句。

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

归根结底,错误是说您尝试插入的列与您传入的数据不匹配。所以检查语句。

于 2013-11-06T07:16:13.307 回答
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');
    });
于 2016-05-26T14:39:29.060 回答