为什么将电子邮件数据发送到数据库时出现错误?

时间:2019-12-07 17:39:39

标签: database electron syntax-error node-sqlite3

所以我的问题是我遇到了这个错误:Uncaught Error: SQLITE_ERROR: near "@gmail": syntax error 当我在数据库中插入或更新时。

我正在使用sqlite3和电子。这是我的代码:

function addPatient(){
  var req = 'INSERT INTO patient(nom, prenom, age, tel, mail, sexe, paiement) VALUES('+li_nom.value+','+li_prenom.value+','+li_age.value+','+li_tel.value+','+li_mail.value+','+li_sexe.value+','+li_paiement.value+')';
  db.run(req);
  event.preventDefault();
  console.log("done");
}

PS:我从表单值中获取数据。

如果您需要更多信息,请随时询问。

感谢帮助:)

1 个答案:

答案 0 :(得分:1)

您正在通过字符串串联创建SQL查询,这使其很容易受到SQL注入和格式错误的查询的影响。

当数据库收到查询后,您的查询基本上会像这样结束:

INSERT INTO patient(nom, prenom, age, tel, mail, sexe, paiement) VALUES(name,prename,25,555555555,example@gmail.com,male,500)

这里的问题:

  1. 字符串值需要在查询中加引号
  2. @符号用于变量(当它不是真实字符串的一部分或未加引号时)

您需要使用参数化查询。这将解决这两个问题,可以保护您免受几乎所有SQL注入的侵害。您可以在查询中创建占位符,然后通过程序库设置占位符。