mysql 模块如何实现批量Insert保存?
发布于 9 年前 作者 zhb0810 5959 次浏览 最后一次编辑是 8 年前 来自 问答

如题,下边是我写的模块代码实现,求大神帮忙看看,谢谢! 测试数据是

fields = "f1,f2,f3";
values = [[1,2,3],[4,5,6]];

var mysql = require('mysql');

var DbUtil = function(dbConfig){
	this.dbConfig = dbConfig;
}
DbUtil.prototype.batchSave = function(tableName, fields, values, callback){
	var sql = "INSERT INTO " + tableName + "(" + fields + ")  VALUES (?) ";
	var conn = null;

	try{
		conn = this.createConnection();
		//sql = mysql.format(sql, values);
		console.log(sql);
		var query = conn.query(sql, values, function(err, results){
			if(err){
				//console.log(data);
				console.log(sql);
			}
			callback(err, results);	
			conn.end();
		});

	}catch(err){
		if(conn){
			conn.end();
		}
		//console.log(sql);
		//console.log(err);
	}
}

exports.getInstance = function(dbConfig){
	return new DbUtil(dbConfig);
}
4 回复

找到原因了

var query = conn.query(sql, values, function(err, results){
			if(err){
				//console.log(data);
				console.log(sql);
			}
			callback(err, results);	
			conn.end();
});

应该改为
var query = conn.query(sql, [values], function(err, results){
			if(err){
				//console.log(data);
				console.log(sql);
			}
			callback(err, results);	
			conn.end();
});

测试通过!

你这个能同时插入2行记录?mysql模块版本多少? 我测试了下 只能把[1,2,3]这条记录插入吧。

@imhered mysql 5.7的 我试了可以啊

@zhb0810 哦,我用的5.6。原来如此。

回到顶部