如果表行数每次都不同,如何将 Javascript 循环插入到 SQL INSERT 语句中?

问题描述 投票:0回答:2

所以我有一个表,当执行该表时,该表会循环遍历数据并将值行插入到数据库中。目前我正在使用基本的插入语句(我知道 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))

javascript html jquery sql sql-insert
2个回答
0
投票
DECLARE @i int = 0
WHILE @i < 300 
    BEGIN
        SET @i = @i + 1
        /* your code goes here */
    END

0
投票

使用 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);

希望这能解决您的问题

© www.soinside.com 2019 - 2024. All rights reserved.