Двойные и одинарные кавычки при вставке SQL

#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("'", "''")   "'";
    }
}