2014-12-02 64 views
-2

我已經檢查了所有關於此問題的論壇,並且找到了我的第一個插入的解決方案,我使用了「雙引號」而不是單引號,如下所示:SQLite:從SQL請求中插入帶單引號的文本

insertGiftShop(2,"photo02","Modern City by night photo", "item-grumdy1l", "A view of Modern City''s skytrain",1,100, "","no","items",0) 

上一個函數是在遊戲開始時插入我的行。當我檢查數據庫時,數值存儲如下:「現代城市輕軌的景觀」。

它工作得很好!現在,我試圖讓存儲的信息「現代城市的輕軌一景」,而在另一個表中插入它如下列:

function insertInventory(id, code, name, src, desc, sale, qtyoninventory, price, usetxt, type) 
    local sql = "insert into inventory (id, code, name, src, desc, sale, qtyoninventory, price, usetxt, type) values (" .. id.. ",'" .. code .. "','" .. name .. "', '" .. src .. "', '" .. desc .. "', '" .. sale .. "',"..qtyoninventory..","..price..",'"..usetxt.."','"..type.."')" 
    db:exec(sql) 
end 


insertInventory(maxid+1,row_2.code, row_2.name, row_2.src, row_2.desc, "no",1,row_2.price,row_2.usetxt, row_2.type) 

在這種情況下,我得到了row_2.desc(是什麼「等等的觀點」)直接從存儲的字段中獲得。但它不工作,因爲它需要「單引號」!

如何識別「格式」row_2.desc以便在文本內有單引號時添加所需的「雙引號」?


編輯:

根據您的意見,我改變我的表到「插入」數據的方式。

所以,我嘗試這樣做:

tx.executeSql("INSERT INTO inventory(id, code, name) VALUES(?,?,?)",[2, "photo02", "Modern City's skytrain"]) 

我有一個錯誤附近 「[」。語法是否正確?

我用這個,它是正確的,並防止SQL注入?

db:exec([[INSERT INTO items(id, code, name, src, desc, sale, qty, price, usetxt, type, onscene, area) VALUES(1,"ls01","LETP", "item-lss", "LVP","no",0,100, "It this burger?", "items", "yes", "table02")]]) 

回答

0

永遠不要將字符串值直接放入SQL字符串! 這不僅會導致格式問題(如您所見),還會導致SQL注入攻擊。

使用參數而不是,那麼你就需要逃跑報價:

tx.executeSql("INSERT INTO MyTable(ID, Name, Description) VALUES(?,?,?)", 
       [2, "photo02", "Modern City's skytrain"]); 
+0

對不起,我不明白我的問題,你的答案:(之間的關係。如果你正在談論的第二個「插入「,我的值取自SQL請求! – 2014-12-02 17:43:02