2014-10-05 21 views
0

我看到本聲明的ExecuteSQL象下面這樣:Sql語句的JavaScript

addTodo: function (text) { 
     app.db.transaction(function (tx) { 
      var ts = new Date(); 
      tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (?,?)", [text, ts], app.onSuccess, app.onError); 
     }); 
    }, 

我的問題是:什麼是 「(?)VALUES」 是什麼意思?

回答

1

這些參數將被正確準備,並由SQL語句後面的數組參數替代。

所以

tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (?,?)", ['do this', '10/05/2014']); 

將導致

INSERT INTO todo(todo, added_on) VALUES ('do this', '10/05/2014') 
1

這是一個prepared statement,你應該使用它來防止SQL Injection attacks。例如。

var text = "foo"; 
var ts = "bar"; 
tx.executeSql("INSERT INTO todo(todo, added_on) VALUES (?,?)", [text, ts]); 

相同:

tx.executeSql("INSERT INTO todo(todo, added_on) VALUES ('foo','bar')");