【问题标题】:Getting SQLITE ERROR incomplete input error. What's wrong?获取 SQLITE ERROR 不完整的输入错误。怎么了?
【发布时间】:2020-06-28 18:34:47
【问题描述】:

运行此 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));

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

【问题讨论】:

  • 怎么了?您正在使用文字值修改查询字符串。你需要学会使用参数。
  • 我不明白对此的反对意见?这是个坏问题吗?我也有类似的问题,但不敢问。

标签: sql node.js sqlite sql-insert node-sqlite3


【解决方案1】:

我怀疑您的某个变量包含与查询字符串冲突的字符 - 例如单引号。

不要在查询字符串中混淆变量。这既不安全(它会打开您的代码以进行 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)
);

【讨论】:

  • 我之前使用过这个参数化代码,但仍然无法正常工作。我刚刚放下桌子,它工作正常。
猜你喜欢
  • 2020-05-19
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
相关资源
最近更新 更多