node.js - 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 表的名称。
解决方案
您在此处传递给“切片”函数的参数:
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
推荐阅读
- python - 如何在分号后没有指定秒数的 Z 字母解析日期时间
- c++ - 如何使用 Lua c API 正确读取字符串和表参数?
- android - 如何让我的 android 应用在 RTL 和 LTR 语言上看起来一样?
- html - Outlook 自己修改了本地图像的链接,如何防止这种情况发生?
- c++ - 多态二元函数
- java - 如何为数组中的每个元素显示不同的消息?
- c++ - 如何使用用户输入正确填充 C++ 中的二维数组?
- javascript - 从 api 转换日期和时间使时间继续
- python - C++ vs Python vs Ruby 递归列出所有目录的性能
- python - 如何使用带有给定测试集的 ngram 从“数据集”中找到下一个单词。