获取sqlite错误不完整的输入错误怎么了?

dwbf0jvd  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(262)

运行这个sqlite语句时,我得到一个错误:输入不完整

return db.run(
  `INSERT INTO articles(article_id, title, author, article) VALUES `+"('"+article_id+"', '"+data.title+"', '"+data.author+"', '"+data.article+"')",
  (err) => callback(err, article_id));

怎么了?我已经记录了所有的数据输入,但是它们在查询中有正确的值(即没有丢失值)。是因为语法错误吗?请帮忙。

rqmkfv5c

rqmkfv5c1#

我怀疑您的一个变量包含与查询字符串冲突的字符,例如单引号。
不要咀嚼查询字符串中的变量。这既不安全(它使您的代码易于sql注入),又效率低下(数据库无法识别您正在运行同一个查询),而且容易出错。
相反,请使用参数化查询:

return db.run(
    "INSERT INTO articles(article_id, title, author, article) VALUES (?, ?, ?, ?)"
    [ article_id, data.title, data.author, data.article ],
    (err) => callback(err, article_id)
);

相关问题