gpt4 book ai didi

mysql - 如何在 NodeJS 中使用 for 循环插入 SQL 表?

转载 作者:行者123 更新时间:2023-11-29 15:35:03 31 4
gpt4 key购买 nike

我无法找到使用 for 循环和数组向表添加项目的正确 SQL 语法。这就是我正在尝试做的:

var mysql = require('mysql');

var con = mysql.createConnection({
host: "localhost",
user: "root",
database: 'DUSAgeocodeDB'
});

var addreses = ['addres1', 'address2', 'address3'];
var latitude = [12, 45, 789];
var longitude = [987, 654, 321];

for (var i =0; i <addreses.length; i++) {

con.connect(function(err) {
con.query(`INSERT INTO maintable (mainaddress, latitude, longitude) VALUES (${addreses[i]}, ${latitude[i]}, ${longitude[i]} )`, function (err, result) {
if(err) throw err;

console.log('VALUES ADDED')
});

})
}

为了将这些值保存到 mysql 表,con.query() 语句的正确语法是什么?这是我尝试过的其他方法,但不起作用

for (var i =0; i <addreses.length; i++) {

con.connect(function(err) {
con.query("INSERT INTO maintable (mainaddress, latitude, longitude) VALUES ("+${mysql.escape(addreses[i])}+", "+${mysql.escape(latitude[i])}+", "+${mysql.escape(longitude[i])}" )", function (err, result) {
if(err) throw err;

console.log('VALUES ADDED')
});

})
}

最佳答案

我建议利用 Promise.all这样您就可以并行触发多个异步操作。 mysql 不提供 Promise 支持,但是,您可以使用 msql2确实如此。在这里,我将现有的 con.query 包装在它自己的 promise 中。

function queryPromise(query) {
return new Promise((resolve, reject) => {
con.query(query, (err, result) => {
if (err) {
return reject(err);
}

return resolve(result);
});
});
}

con.connect(async (err) => {
await Promise.all(
addreses.map((_, i) => {
return queryPromise(
`INSERT INTO maintable (mainaddress, latitude, longitude) VALUES (${addreses[i]}, ${latitude[i]}, ${longitude[i]} )`
);
})
);
});

关于mysql - 如何在 NodeJS 中使用 for 循环插入 SQL 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58331631/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com