HTML5 SQL Вставить несколько строк - PullRequest
1 голос
/ 29 октября 2019

Я пытаюсь вставить несколько строк в базу данных SQLite.

Вставка одной строки, например, работает нормально:

tx.executeSql("INSERT or REPLACE  INTO `table` (`type` , `pid` , `title` , `body`) VALUES  (?,?,?,?) ", ['qa',v.id,v.title,v.content_html ] ,console_success, console_fail); 

Как передать массив переменных в это выполнениезапустить все сразу? (Кажется, что метод paramiterizaion правильно очищает мои данные и вставляет их. Когда я выполняю необработанный запрос, это не так, и мой sql завершается ошибкой. Мне нужно вставить полное тело HTML в БД)

, чтобы я мог 'просто сделайте запрос, подобный этому, * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '' * '*' '*' '' '101' * "*". 5 SQLite: несколько вставок в одной транзакции

1 Ответ

1 голос
/ 30 октября 2019

Как вы узнали, вам следует придерживаться параметризованного запроса и избегать "необработанных" запросов. Параметризованные запросы автоматически уйдут от вас, предотвращая внедрение SQL.

Ключом здесь является создание параметризованного запроса, который будет соответствовать вашим потребностям. Вот пример.

// Guessing 2d array of raw data
var dataArr = [ ['qa','123','title1','<html></html>' ],
                ['bc','456','title2','<html></html>' ],
                ['xy','789','title3','<html></html>' ] ];

// Creating a parametrized entry for every row of dataArr
var param = "(?,?,?,?),".repeat(dataArr.length).slice(0,-1);

// The insert query
var query = "INSERT or REPLACE  INTO `MyTable` (`type` , `pid` , `title` , `body`) VALUES ";

// Convert the 2d dataArr into 1d data
var data = [];
for(var i = 0; i < dataArr.length; i++)
  data = data.concat(dataArr[i]);

tx.executeSql(query + param, data);  // Final query is : INSERT or REPLACE  INTO `MyTable` (`type` , `pid` , `title` , `body`) VALUES (?,?,?,?),(?,?,?,?),(?,?,?,?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...