You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何MySQL无法插入Discord用户ID?求成员退出删除数据方法

解决Discord.js中用户加入时MySQL插入ID异常与退出删除问题

嘿,我来帮你搞定这两个问题!

一、为什么插入的是${member.id}而非真实用户ID?

你遇到的问题是模板字符串的语法使用错误:JavaScript里的模板字符串变量解析只在**反引号()**包裹的内容里生效,而你用了双引号("),导致${member.id}`被当成普通字符串直接插入数据库了。

这里有两种解决方式,更推荐第二种(安全防注入):

方式1:改用反引号包裹SQL语句

把原来的双引号换成反引号,让变量正常解析:

client.on('guildMemberAdd', member => {
  connection.query(`INSERT INTO userLevel (userID, userXP) VALUES ('${member.id}', 0 )`, err => {
    if(err) throw err;
    console.log("New member added successfully!");
  });
});

方式2:使用参数化查询(推荐,防SQL注入)

直接拼接字符串存在SQL注入风险,MySQL支持用?作为占位符,通过数组传递参数更安全:

client.on('guildMemberAdd', member => {
  connection.query("INSERT INTO userLevel (userID, userXP) VALUES (?, 0 )", [member.id], err => {
    if(err) throw err;
    console.log("New member added successfully!");
  });
});

二、用户退出服务器时删除对应数据库信息

你可以监听guildMemberRemove事件,在用户退出时执行DELETE语句,同样建议用参数化查询:

client.on('guildMemberRemove', member => {
  connection.query("DELETE FROM userLevel WHERE userID = ?", [member.id], err => {
    if(err) throw err;
    console.log("Member removed from database successfully!");
  });
});

这样就能在用户退出时,精准删除数据库中对应用户的记录啦。

内容的提问来源于stack exchange,提问作者A V R O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:29:25