gpt4 book ai didi

mysql - 如何使用 npm mysql 将表达式与批量插入结合使用?

转载 作者:行者123 更新时间:2023-11-30 22:00:40 26 4
gpt4 key购买 nike

这个问题回答了我 99% 的问题... How do I do a bulk insert in mySQL using node.js

var sql = "INSERT INTO Test (name, email, n) VALUES ?";
var values = [
['demian', 'demian@gmail.com', 1],
['john', 'john@gmail.com', 2],
['mark', 'mark@gmail.com', 3],
['pete', 'pete@gmail.com', 4]
];
conn.query(sql, [values], function(err) {
if (err) throw err;
conn.end();
});

如果我想传递一个表达式,例如 NOW(),我该怎么做?如果我在数组中传递它,它将算作一个字符串。由于 VALUES 是一个由数组填充的 ?,因此我无法轻松地注入(inject)表达式。有什么想法吗?

最佳答案

基本上这似乎是不可能的,所以你应该做一个你想要的查询字符串。

我会尝试如下。

var sql = "INSERT INTO Test (name, email, n, modified_on) VALUES ?";
var values = [
['demian', 'demian@gmail.com', 1, '::NOW()'],
['john', 'john@gmail.com', 2, '::UNIX_TIMESTAMP()'],
['mark', 'mark@gmail.com', 3, '::DATE()'],
['pete', 'pete@gmail.com', 4, '::NOW()']
];

var formattedQuery = connection.format(sql, [values]).replace(/'::(.*?)'/g, '$1');

connection.query(formattedQuery, function(err) {
});

fomattedQuery如下。

INSERT INTO Test (name, email, n, modified_on) VALUES ('demian', 'demian@gmail.com', 1, NOW()), ('john', 'john@gmail.com', 2, UNIX_TIMESTAMP()), ('mark', 'mark@gmail.com', 3, DATE()), ('pete', 'pete@gmail.com', 4, NOW())

希望对您有所帮助。

关于mysql - 如何使用 npm mysql 将表达式与批量插入结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43481075/

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