Phonegap SQLite错误处理5:No. of '?'不匹配

Phonegap SQLite error processing 5: No. of '?' doesn't match

我不知道我的代码发生了什么。我不知道为什么在我不使用“?”时,语句字符串中的“?”数量与争论计数不匹配。插入值。这是我的代码:

    db = window.openDatabase("myDB", "1.0", "Test DB", 2000000);
        db.transaction(populateDB, errorCB, successCB);

            $.ajax({

            type: 'POST',
            url: "MY_SERVER_URL",
            data: {"email": email, "password": password},
            success: function (response) {
                     db.transaction(function (tx) { saveDetailsInDB(tx, JSON.stringify(response)) } ,errorCB , successInsertion);

            },
            error: function (errorMessage) {
                window.alert("Something went wrong!");

            }

        });


        }   
    }

function populateDB(tx) {
            tx.executeSql('DROP TABLE IF EXISTS UserDetailsInJSONform');
            tx.executeSql('CREATE TABLE IF NOT EXISTS UserDetailsInJSONform (ID INTEGER, JSONdetails TEXT)');
            tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (1,"asd")');
}


function saveDetailsInDB(tx, response){
    tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (1,"asd")',done,errorCB);
}


function done(tx) {
    alert("success ");
    tx.executeSql('SELECT * FROM UserDetailsInJSONform', [], querySuccess, errorCB);
}


// Transaction error callback
function errorCB(err) {
    alert("Error processing SQL: "+err.code+" "+err.message);
}


// Transaction success callback
function successCB() {
     alert("Positive successCB");
}


function successInsertion() {
     alert("Positive successInsertion");
}


function querySuccess(tx,results){
        var len = results.rows.length;
        alert("Row no. "+len);

        for (var i=0; i<len; i++){
            alert(results.rows.item(i).ID);
            alert(results.rows.item(i).JSONdetails );
        }   

}

我是 Phonegap 的初学者。我试图将我从服务器返回的数据保存在本地 SQLite 数据库中。但我不知道为什么我会收到未知错误。请帮助我!!

tx.executeSql 中的第二个参数需要括号之间的值。 tx.executeSql(sqlToExecuteForTx,bracketValuesForTx,success,error);

在您的代码中: tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (1,"asd")',done,errorCB);

它有 'done' 作为第二个值,它指的是代码中的一个函数。我会推荐使用: tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (?,?)',[1,"asd"],done,errorCB);