gpt4 book ai didi

javascript - 使用单个查询更新多个 SQL 记录 使用 npm mysql 进行 MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 16:29:07 24 4
gpt4 key购买 nike

感谢您查看此内容!我正在尝试使用单个查询更新 MySQL 中的一些记录;但是,我正在使用带有 Promises 的类来创建一组同步查询,但我似乎无法让它工作。这是我目前拥有的:

req.body 是一个包含两个键/值对的对象数组...

API:

router.post('/verified', (req, res) => {
let database = new Database(dbOptions);
let verifiedItemsArray = [];
let sqlQueryArray = [];

let updateQuery = 'UPDATE `raw_unverified` SET `funding_source` = ? WHERE `ritm_number` = ?';
let verifiedItemArray = [req.body[0].funding_source, req.body[0].ritm_number];

database.beginTransaction([updateQuery], verifiedItemArray)
.then(response => console.log(response))
.catch(error => console.log(error));

res.send('Update Successful');
});

数据库类:

class Database {
constructor(config) {
this.connection = mysql.createConnection(config);
}

query(sqlQuery, sqlArgs) {
console.log(sqlQuery);
return new Promise( (resolve, reject) => {
this.connection.query(sqlQuery, ((sqlArgs) ? [sqlArgs] : null), (error, results) => {

if (error) return reject(error);
resolve(results);
});
});
}

beginTransaction(sqlQueries, sqlArgs) {
return new Promise( (resolve, reject) => {
let allResults = [];
this.connection.beginTransaction( (error) => {
if (error) return reject(error);

for (let i = 0; i < sqlQueries.length; i++) {
this.query(sqlQueries[i], ((sqlArgs) ? sqlArgs[i] : null))
.then((results) => {
allResults.push(results);
})
.catch((error) => {
throw error;
});
}

this.connection.commit( (error) => {
if (error) return reject(error);
resolve(allResults);
});
});
});
}
}

module.exports = Database;

这是我得到的错误:

UPDATE raw_unverified SET funding_source = ? WHERE ritm_number = ?

(node:8216) UnhandledPromiseRejectionWarning: Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1

任何帮助将不胜感激,任何我可以做得更好的地方,请随时指出!

先谢谢大家了!

最佳答案

在这一行

this.query(sqlQueries[i], ((sqlArgs) ? sqlArgs[i] : null))

您正在按索引将参数传递给查询 - 这意味着您需要更改

database.beginTransaction([updateQuery], verifiedItemArray)

database.beginTransaction([updateQuery], [verifiedItemArray])

关于javascript - 使用单个查询更新多个 SQL 记录 使用 npm mysql 进行 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54057063/

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