javascript
  • firefox
  • sqlite
  • firefox-addon
  • 2009-10-18 67 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 +「)');}}}

    相關問題