2014-12-02 3 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) 

Предыдущая функция вставляет мою строку в начале игры. Когда я проверяю базу данных, значение сохраняется следующим образом: «Вид на Skytrain современного города».

Это работает очень хорошо! Теперь я пытаюсь получить сохраненную информацию «Вид на Skytrain современного города» и вставить его в другой таблице, такие как следующие:

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 (что «Вид и т. Д.») Непосредственно из хранимой заявки. НО это не работает, потому что он принимает «одиночную цитату»!

Как я могу указать «формат» строки_2.desc, чтобы добавить нужную «двойную кавычку», когда текст содержит одну цитату внутри?


Edit:

По вашему комментарию, я изменить путь к "вставить" данные в моих таблицах.

Итак, я попытался это:

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! –

Смежные вопросы