通过具有多个占位符和 SELECT 的 NodeJS 批量插入到 MYSQL
Bulk inserting to MYSQL through NodeJS With Multiple Placeholders and SELECT
我在执行以下操作时遇到问题。任何帮助将不胜感激
var values = [
['Product1', 1, 1],
['Product2', 1, 1],
];
dbConn.query(
'INSERT INTO tblQuoteItems (ProductIDFK,QuoteIDFK,CustomerIDFK) VALUES ((SELECT ProductIDPK FROM tblProducts WHERE ProductName=?),?,?)',
[values],
function (err, res) {
if (err) {
result(null, err);
} else {
result(null, res);
}
}
);
错误响应显示它正在将所有数组转储到第一个占位符而不是每个占位符一个值并迭代数组元素的数量。这是从上面创建的 SQL :
INSERT INTO tblQuoteItems (ProductIDFK,QuoteIDFK,CustomerIDFK) VALUES ((SELECT ProductIDPK FROM tblProducts WHERE ProductName=('Product1', 1, 1), ('Product2', 1, 1)),?,?)
对于可能处于相同情况的任何人。我找到的答案是创建并使用一个临时 table 然后 SELECT 从中找到外键 ID。我找不到在 Nodejs MySQL 库中使用占位符单独映射到数组中每个元素的方法。
我在执行以下操作时遇到问题。任何帮助将不胜感激
var values = [
['Product1', 1, 1],
['Product2', 1, 1],
];
dbConn.query(
'INSERT INTO tblQuoteItems (ProductIDFK,QuoteIDFK,CustomerIDFK) VALUES ((SELECT ProductIDPK FROM tblProducts WHERE ProductName=?),?,?)',
[values],
function (err, res) {
if (err) {
result(null, err);
} else {
result(null, res);
}
}
);
错误响应显示它正在将所有数组转储到第一个占位符而不是每个占位符一个值并迭代数组元素的数量。这是从上面创建的 SQL :
INSERT INTO tblQuoteItems (ProductIDFK,QuoteIDFK,CustomerIDFK) VALUES ((SELECT ProductIDPK FROM tblProducts WHERE ProductName=('Product1', 1, 1), ('Product2', 1, 1)),?,?)
对于可能处于相同情况的任何人。我找到的答案是创建并使用一个临时 table 然后 SELECT 从中找到外键 ID。我找不到在 Nodejs MySQL 库中使用占位符单独映射到数组中每个元素的方法。