#javascript #sql #sqlite
#javascript #sql #sqlite
Вопрос:
Я пытаюсь вставить динамические элементы в таблицу, используя Javascript и SQLite, у меня проблема, когда одно из значений содержит одинарную кавычку И двойную кавычку, например — винил 7 дюймов — я ЗНАЮ, ЧТО ЭТОТ ПРИМЕР НЕ ИМЕЕТ СМЫСЛА, но пользователи этого приложения вставляют все виды дерьмо в бланках.
Мой запрос был бы перепутан с «‘ везде, мой вопрос таков: есть ли функция или что-то, что могло бы заставить меня использовать реальную строку, которая мне нужна, не нарушая все?
Это код:
$.each(data, function(i, item) {
tx.executeSql("INSERT INTO articulo (codart) VALUES (" validate(item.CODART) ")");
});
function validate(item){
if(item == null){
return null;
}else{
return "'" item "'";
}
}
Комментарии:
1. То, что находится в строке, не должно нарушать ваш запрос. Если это так, это проблема безопасности. Как вы строите запрос? Мы не можем сказать вам, в чем проблема, не видя вашего кода.
2. Вам нужно посмотреть на метод экранирования символов кавычек.
Ответ №1:
Вы могли бы избежать одинарных кавычек, удвоив их, но было бы проще просто использовать параметры:
tx.executeSql("INSERT INTO articulo (codart) VALUES (?)", [validate(item.CODART)]);
Комментарии:
1. Плюс 1 для параметров.
Ответ №2:
Двойные кавычки не должны создавать проблем. Попробуйте заменить одинарные кавычки двумя одинарными кавычками.
Измените функцию на:
function validate(item){
if(item == null){
return null;
}else{
return "'" item.replace("'", "''") "'";
}
}