我在nodejs项目中使用了mysql2,在mysql库中,我使用了Multiple Statements来更新我的数据库,效果很好,但由于某种原因,在mysql2中它不起作用,我在谷歌上搜索了很多,没有找到任何解决方案,mysql2不支持多个语句吗??
-
这是多查询
async function updateChannels(dtz) { for (const data of dtz) { multipleQuery += `UPDATE myTable SET data='${data.newData}' WHERE data='${data.oldData}';` } await con.execute(multipleQuery);}
在mysql.createConnection中,我添加了多条语句:true
- 这是错误
未处理的PromiseRejection警告:错误:您的SQL语法有错误;查看与MySQL服务器版本相对应的手册,了解在"UPDATE "附近使用的正确语法
当我在phpMyAdmin控制台中复制并粘贴该查询时,该查询工作得很好
您需要使用查询调用而不是执行:
let rows, field;
try {
[rows, fields] = await connection.query(query);
} catch (err) {
// handle err
}
if (rows) {
// exploit the result
}
但除此之外,是的,execute命令将只允许您运行一条指令。
GitHub:解决问题
您不能用多个语句准备查询。将其拆分为两个或使用未准备好的语句api(
dbpool.query(...)
(