0

Phonegap を使用してプロジェクトに Sqlite db を実装しています。データベースの成功をクエリと最終的にクエリ成功関数にポイントすると、クエリが成功し、追加された行数が0であるというアラートが表示されるため、問題はinsertステートメントに関係していることを知っています。私は試してみましたこれはさまざまな方法ですが、役に立ちません。(明らかな誤りがある場合、それは私が自己学習しているためです。)

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

2 に答える 2

2

パラメータ化されたクエリを使用することで、この種のエラーとSQL インジェクションの可能性を回避できます

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

db.transaction(function(dbtx){
    dbtx.executeSql(insertRec, [userName, imagePath], queryDB, insFail);
});
于 2013-01-13T17:03:05.470 に答える
1

次のようにアポストロフィを追加する必要があります。

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

複数の空白挿入を防ぐには、挿入ステートメントを次のようにラップします。

if(userName != '' && imagePath != ''){
    // Your code
}
于 2013-01-13T16:51:30.973 に答える