2014-10-05 81 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')");