我已经检查了所有有关此问题的论坛,我找到了第一个插入的解决方案,我使用了"双引号"而是单引号如下:
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是为了添加一个必要的"双引号"当文本里面有单引号时?
修改
根据您的评论,我已经改变了对#34;插入"我表格中的数据。
所以,我试过这个:
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 :(得分:0)
永远不要将字符串值直接放入SQL字符串中! 这不仅为您提供格式化问题(如您所见),还允许SQL注入攻击。
使用参数代替,然后您不需要转义引号:
tx.executeSql("INSERT INTO MyTable(ID, Name, Description) VALUES(?,?,?)",
[2, "photo02", "Modern City's skytrain"]);