为什么我不能在SQLite中更改值?

时间:2018-10-30 15:40:05

标签: javascript sqlite

我需要从SQLite3数据库获取用户ID并用新值更新它。但是我有一些麻烦。

Google2Pandas

db.each(`SELECT * FROM admins WHERE id = 1`, function(err, user) { console.log(user); db.run(`REPLACE INTO admins (id, user_id, first_name, last_name) VALUES (user.id, user.user_id, user.first_name, "NEW LAST NAME");`) }) 返回:

console.log(user)

为什么显示此错误?如果我删除此代码,一切都会变好...

2 个答案:

答案 0 :(得分:1)

SQLite不知道您的user函数参数。使用命令参数

db.run(`REPLACE INTO admins (id, user_id, first_name, last_name) VALUES (?, ?, ?, ?);`,
       user.id, user.user_id, user.first_name, "NEW LAST NAME")

请注意,现在对user的引用在SQL命令字符串之外。

请参阅:Database#run(sql, [param, ...], [callback])(如果您使用的是API)。

答案 1 :(得分:1)

我认为原因是,当对字符串使用反引号(`)时,需要在${}内放入表达式。因此,您将拥有id对象的user字段的值,而不是字符串“ user.id”:

db.run(`REPLACE INTO admins (id, user_id, first_name, last_name) VALUES 
    (${user.id}, ${user.user_id}, ${user.first_name}, 
    "NEW LAST NAME");`)

但是我不了解sqlite,所以可能无法解决问题。