javascript - SQL UPDATE 事件无法通过消息事件与 discord.js 一起正常工作
问题描述
在过去的几天里,我一直在尝试使用 mysql npm 包让 SQL UPDATE 事件与 discord.js 一起正常工作。所有登录详细信息和表、列名均正确。这意味着每次在 Discord 文本通道中发送消息时更新整数。
我已经尝试了多种类型的更新,即使没有一种已经成功。
查看这些日志截图: - https://faxes.zone/img/y4fx1.png(触发事件之前/之后) - https://faxes.zone/img/8610v.png(discord.js控制台当消息已发送)
bot.on("message", message => {
if ( message.channel.type === 'dm' ) return;
if (message.author.bot) return;
if (message.content.startsWith(".")) return;
connection.query(`SELECT * FROM logs WHERE id = '${message.author.id}'`, function (err, resultLogs) {
if(err) throw err;
let sql;
if(resultLogs[0]) {
console.log(resultLogs[0].msgcount)
let newMessageCount = resultLogs[0].msgcount++;
sql = `UPDATE logs SET msgcount = ${newMessageCount} WHERE id=${message.author.id}`
connection.query(sql, console.log)
}
});
});
每次发送消息时,预期的输出应该是整数加一。
解决方案
msgcount
您可以使用 MySql 运算符递增。因此,您不需要进行选择查询。而且您还需要转义 sql 语句中的值以防止注入。
顺便说一句,我重构了你的代码。
bot.on('message', message => {
if ( message.channel.type === 'dm' || message.author.bot || message.content.startsWith(".") ) return;
connection.query('UPDATE logs SET msgcount = msgcount + 1 WHERE id = ?', [message.author.id], (error, result) => {
if (error) throw error;
console.log(result);
})
}
推荐阅读
- karate - 比较空手道中的 json
- mysql - Mysql INNER JOIN 子表与主表列中的逗号分隔值
- typescript - 是否可以使用具有不同联合类型的数组元素而不会出现“不可分配给'从不'类型的参数”错误?
- python - QSlider 手柄尺寸 PyQt5
- oracle - 如何恢复 Sysman - Oracle 11g
- android - 如何处理设置为 TextView 的文本内容中的网络链接点击
- mysql - 无法使用 ProxySQL / MariaDb 复制安装 Prestashop - unable_to_parse_set_statement 错误
- powerbi - 仅使用 DAX 中的度量来计算每个产品的中位数百分比变化的平均值
- caching - 在电报的 answerCallbackquery API 中,cache_time 做了什么?
- python-3.x - re.sub : 如何解决 TypeError: expected string or bytes-like object