繁体   English   中英

如何使用node.js在mySQL中从数组插入多个记录

[英]How do I insert multiple records from array in mySQL using node.js

我有一个查找表:

CREATE TABLE technologies (
    technologyName VARCHAR(50) NOT NULL PRIMARY KEY
);

我想在此表中为数组中的每个元素存储一条新记录:

var values = ['Grunt', 'Gulp'];

这样生成的表将如下所示:

+----------------+
| technologyName |
+----------------+
| Grunt          |
+----------------+
| Gulp           |
+----------------+

我怎么能用Node做到这一点?

更新:

我知道我可以这样做:

var values = [
  [
    ['Grunt'], 
    ['Something']
  ]
]
connection.query('INSERT IGNORE INTO technologies (technologyName) VALUES ?', values);

我用原始数组尝试了这个但它不起作用。 如何将简单数组转换为更复杂的数组?

如果你想用“?” 为了逃避您的值并避免SQL注入,mysqljs接受嵌套数组进行批量插入。 所以你的更新的答案是:

var valuesNestedArray  = [];

for(var v in values ) {
  valuesNestedArray.push([values[v]]);
}

var sql = "INSERT IGNORE INTO technologies (technologyname) values ?";
connection.query(sql, [valuesNestedArray], function(err) {
    if (err) throw err;   
});

你可以一次插入多个东西......

来自mysql文档( https://dev.mysql.com/doc/refman/5.5/en/insert.html

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

所以对你:

insert into technologies (technologyname) values ('grunt'),('gulp')

var sql = "insert into technologies (technologyname) values ";

for(var v in values)
  sql += "('" + connection.escape(values[v]) + "'),";

sql = sql.substr(0,sql.length-1); // take off the last comma since we added one after each value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM