所以我的问题是我遇到了这个错误: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:我从表单值中获取数据。
如果您需要更多信息,请随时询问。
感谢帮助:)
答案 0 :(得分:1)
您正在通过字符串串联创建SQL查询,这使其很容易受到SQL注入和格式错误的查询的影响。
当数据库收到查询后,您的查询基本上会像这样结束:
INSERT INTO patient(nom, prenom, age, tel, mail, sexe, paiement) VALUES(name,prename,25,555555555,example@gmail.com,male,500)
这里的问题:
@
符号用于变量(当它不是真实字符串的一部分或未加引号时)您需要使用参数化查询。这将解决这两个问题,和可以保护您免受几乎所有SQL注入的侵害。您可以在查询中创建占位符,然后通过程序库设置占位符。