所以我有一个表,当执行该表时,该表会循环遍历数据并将值行插入到数据库中。目前我正在使用基本的插入语句(我知道 SQL 注入非常临时)。我遇到的麻烦是目前我正在对数组中索引的位置进行硬编码。你可以想象这只适用于第一行。如果我有两行以上,下一行值将不是相同的索引。所以我想做的是,当它循环并在 UI 上记录值时,不是对表硬编码一百万个插入语句,而是应该将它插入回表中相同的确切位置,无论表中有多少行桌子。所以不是 getInput[3].value 它应该是 getInput[它来自的任何输入的索引位置].value
var getInput = document.querySelectorAll(".vcheck");
for (var i = 0; i < getInput.length; i++)
console.log(getInput[i].id, " => Input", i, " = ", getInput[i].value);
DB(INSERT INTO TABLE(GENERIC_NAME, GENERIC_NAME2, etc) VALUES ('" + getInput[1].value + "', '" + getInput[2].value + "', etc))
目标是变成这样
var getInput = document.querySelectorAll(".vcheck");
for (var i = 0; i < getInput.length; i++)
console.log(getInput[i].id, " => Input", i, " = ", getInput[i].value);
DB(INSERT INTO TABLE(GENERIC_NAME, GENERIC_NAME2, etc) VALUES ('" + getInput[(position in the table)].value + "', '" + getInput[position in the table].value + "', etc))
DECLARE @i int = 0
WHILE @i < 300
BEGIN
SET @i = @i + 1
/* your code goes here */
END
使用 Array.from 转换由 querySelectorAll 返回的列表,并使用 map 方法从每个输入中提取值。
var getInput = document.querySelectorAll(".vcheck");
// create an array of the input values
var values = Array.from(getInput).map(input => input.value);
// generate the SQL statement using template literals and the index of the input
var sql = `INSERT INTO TABLE(GENERIC_NAME, GENERIC_NAME2, etc)
VALUES ('${values[0]}', '${values[1]}', etc)`;
// execute
DB(sql);
希望这能解决您的问题