2013-12-12 64 views
0

我可以使用sql lite通過Phone Gap存儲API使用以下代碼將兩條記錄插入到表「MY_TABLE」中。Phone Gap存儲API是否支持SQL Lite的預準備語句

var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);          
    db.transaction(function (tx) { 
    tx.executeSql("INSERT INTO MY_TABLE (first_name,last_name) VALUES ('joe','smith'),('bob','wilson')"); 
    }, errorCB, function(){ 
    //success code 
    }); 

請問電話峽API有像準備語句的機制來處理有,如單括號,可以迷惑我的INSERT語句字符插入?

回答

3

當然:

tx.executeSql("INSERT INTO MyTable (FirstName, LastNname) VALUES (?, ?)", 
       ["Bobby", "Tables"]); 
+0

嘿CL非常感謝您的回答!任何機會你都可以解釋一下這個語法。例如,問號扮演的角色是什麼,這個如何防範單括號,以及如何擴展到多行插入? –

+0

任何字符串都可以用[參數](http://www.sqlite.org/lang_expr.html#varparam)替換。當字符串來自用戶輸入時,這可以防止[SQL注入攻擊](http://en.wikipedia.org/wiki/SQL_injection)像[this](http://xkcd.com/327/)。多行插入沒有什麼特別之處。 –