插入功能不起作用

时间:2013-01-13 16:29:41

标签: javascript sqlite

我正在使用Phonegap在我的项目上实现Sqlite数据库。我知道问题与我的insert语句有关,因为当我将数据库成功指向我的查询并最终我的querysuccess函数时,我收到警报,查询成功并且添加的行数为0.我试过试过这是各种不同的方式,但无济于事。 (如果有明显的错误,那是因为我在自学。)

   function insertRecord(dbtx, userName, imagePath){
db = window.openDatabase("database", "1.0", "Profiles", 5000);
userName=document.getElementById('userName').value;
imagePath;
var insertRec="INSERT INTO USERS (username, imagePath) values ("+userName+", "+imagePath+")";
    db.transaction(function(dbtx){dbtx.executeSql(insertRec, [], queryDB, insFail);
    });
    }
function insFail(){
    alert('The insert is still failing');
}
   ....
   function successCB() {
    db = window.openDatabase("Database", "1.0", "Profiles", 5000);
    db.transaction(insertRecord, errorCB);// IF I PUT THE QUERYDB HERE INSTEAD OF INSERTRECORD IT WORKS BUT OBVIOUSLY THE RETURN IS ALWAYS 0
    console.log('The db and table are working');

这是我要插入的按钮

   <input id="saveProfile" type="button" value="Save" onClick="insertRecord(dbtx, userName, imagePath);">

2 个答案:

答案 0 :(得分:2)

通过使用参数化查询,您可以避免此类错误和可能的sql injection

var insertRec="INSERT INTO USERS (username, imagePath) values (?, ?)";

db.transaction(function(dbtx){
    dbtx.executeSql(insertRec, [userName, imagePath], queryDB, insFail);
});

答案 1 :(得分:1)

你需要像这样添加撇号:

var insertRec="INSERT INTO USERS (username, imagePath) 
               values ('"+userName+"', '"+imagePath+"')";

为了防止多个空白插入,只需将insert语句包装在:

if(userName != '' && imagePath != ''){
    // Your code
}