首页 > 解决方案 > SQlite 错误:5 附近的语法错误(better-sqlite3)

问题描述

client.on("message", message => {
  const args = message.content.slice(config.prefix.length).trim().split(' ');
      const args2 = message.content.slice('test', ',', args).trim(args).split(' ', args);
  const command = args.shift().toLowerCase();
    if (command === "tbal") {
        if (message.author.bot) return;
    const data = sql.prepare(`SELECT bal FROM ${args}`).get();
      message.channel.send(`You have ${data.bal}`)
  }
  if (command == "tgive") {
    //Get their current XP
    let userscore = sql.prepare(`SELECT bal FROM ${args}`).get()
    let pointsToAdd = parseInt(args2[1], [10]);
    if(!pointsToAdd) return message.reply("How much? You didn't tell me that!");
    //XP level update
    const valueadd = sql.prepare(`INSERT OR REPLACE INTO ${args} (bal) VALUES (userscore + pointsToAdd);`)

    client.setScore.run(userscore)
    return message.channel.send(`${args} has received ${pointsToAdd}. New balance: ${data.bal}`);

}
});

有代码,我得到的错误是这样的:let userscore = sql.prepare(`SELECT bal FROM ${args}`).get()

SqliteError: near "5": syntax error

附近的“5”是args2我执行命令的eco tgive args1 5地方,args1 是 SQLite 表的名称。

标签: node.jsdiscord.jsbetter-sqlite3

解决方案


您在此处传递给“切片”函数的参数:

const args2 = message.content.slice('test', ',', args).trim(args).split(' ', args);

没有任何意义。

Slice 有两个参数,一个 beginIndex 和 endIndex,都是数字。这可能是问题的根源。

当您尝试使用 args 参数时

let userscore = sql.prepare(`SELECT bal FROM ${args}`).get()

它可能处于某种意想不到的状态。

这是有关切片方法的文档: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice


推荐阅读