javascript
  • firefox
  • sqlite
  • firefox-addon
  • 2009-10-18 99 views 1 likes 
    1

    我正在开发一个Firefox的扩展,我已经创建了一个SQLite数据库。当向表中插入值时,我收到一条错误消息: 错误:权限被拒绝,http://en.wikipedia.org调用方法UnnamedClass.toString <>。 要插入的字符串值存储在变量中。插入到变量使用javascript的SQLite

    var book = "Harry Potter"; 
    var myInsertQuery = 'INSERT INTO mybooks_tbl(title) VALUES('+ book + ');'; 
    

    我们如何将数据插入表中作为变量而不是字符串?

    欢呼

    +1

    该错误消息是不太可能与您的问题有任何关系..谨慎张贴更多的代码? – Nickolay 2009-10-18 12:46:30

    回答

    2

    的SQLite遵循string literals ANSI标准:

    A string constant is formed by enclosing the string in single quotes ('). A single quote within the string can be encoded by putting two single quotes in a row

    这样:

    function sqlstr(s) { 
        return "'"+s.replace(/'/g, "''")+"'"; 
    } 
    
    var query= 'INSERT INTO books(title) VALUES('+sqlstr(book)+');'; 
    

    你必须记住,逃避所有字符串文字是这样,否则你会做出一个客户端SQL注入漏洞。

    +3

    真的,你不应该逃避自己,但是。您应该使用可用的绑定函数并让引擎为您处理它:https://developer.mozilla.org/En/Storage#Binding_Parameters – sdwilsh 2009-10-18 17:19:47

    +0

    谢谢,我通过绑定参数找到了解决方法。 – fftoolbar 2009-10-19 01:35:05

    1

    只有字符串有错误 var query ='INSERT INTO books(title)VALUES('+ sqlstr(book)+');'; ('+ v.classTitle +“)');}}}

    相关问题