Код ошибки SQLite № 1: Синтаксическая ошибка

Итак, у меня есть бот discord.js, и я использую SQLite3 для хранения некоторой информации.

const sqlite = require('sqlite3').verbose();
var modDb = new sqlite.Database('moderation');

modDb.serialize(function() {
    modDb.run("DROP TABLE IF EXISTS mute");
    modDb.run("DROP TABLE IF EXISTS ban");
    modDb.run("CREATE TABLE IF NOT EXISTS mute (id INT, username TEXT, discriminator TEXT, dateBegin INTEGER, dateEnd INTEGER, modID TEXT)");
    modDb.run("CREATE TABLE IF NOT EXISTS ban (id INT, username TEXT, discriminator TEXT, dateBegin INTEGER, dateEnd INTEGER, modID TEXT)");
});

Тогда у меня есть код продолжения в другом файле

const sqlite = require("sqlite3").verbose();
var db = new sqlite.Database('moderation');

db.serialize(function() {
  var stmt = db.prepare(`INSERT into mute values(
                        ${user.id},
                        ${user.username},
                        ${user.discriminator},
                        ${Date.now()},
                        ${Date.now() + muteTime},
                        ${message.author.tag});`,
    function(err) {
      if (err) return console.error(err);
    });
  stmt.finalize();
  console.log(stmt);
  console.log(Date.now());
  console.log(muteTime);
  db.each("SELECT * FROM mute", function(err, row) {
    if (err) {
      console.error(err);
    } else {
      console.log(row);
    }
  });

});
db.close();

Когда я запускаю это, это дает мне эту ошибку в консоли:

{ Error: SQLITE_ERROR: near "#3522": syntax error errno: 1, code: 'SQLITE_ERROR' }

#3522 ссылается на message.author.tag, в котором он возвращает имя автора и дискриминатор из API-интерфейса Discord. Я думаю, что это синтаксическая ошибка, но я не знаю, где синтаксическая ошибка. Я делаю это неправильно?

1 ответ

Решение

Вы не передаете значения в db.prepare правильно:

var stmt = db.prepare(`INSERT into mute values(?, ?, ?, ?, ?, ?);`);
stmt.run(user.id, user.username, ...)
Другие вопросы по тегам