我正在使用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);">
答案 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
}