【问题标题】:Sql statement JavaScriptSql 语句 JavaScript
【发布时间】:2014-11-29 20:10:13
【问题描述】:

我在 executeSql 中看到如下语句:

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 (?,?) ”是什么意思?

【问题讨论】:

    标签: javascript sql sqlite


    【解决方案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')");
    

    【讨论】:

      【解决方案2】:

      这些参数将被正确准备并由 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')
      

      【讨论】:

        猜你喜欢
        • 2019-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-21
        • 2013-09-24
        • 2016-03-29
        • 2014-12-05
        • 2013-10-10
        相关资源
        最近更新 更多