我有一个表单,它使用html和javascript将数据提交到SQL数据库的表中。所以我想将用户输入的内容提交给他设备内的本地SQLite数据库。我正在使用PhoneGap,所以我只能使用HTML,JavaScript和CSS。我插入了一个名为SubmVal
的数据。我想将该值插入名为TEST的表中,并且只有两个字段[id INT NOT NULL
- name VARCHAR
]。我使用这段代码:
var db = window.openDatabase("Database", "1.0", "Cordova TEST", 20000);
db.transaction(populateDB, errorCB, successCB);
function SubmitButton() {
/*
CODE TO GET THE INSERTED DATA
*/
var SubmVal = submitteddata;
if (confirm('Are you sure you want to save this ' + SubmVal + ' into the database?')) {
function populateDB(tx) {
tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, SubmVal)');
}
alert("Succesfully Inserted");
} else {
alert("Cancelled");
}
}
所以我有3个问题: 1.如何将SubmVal放入表格的第二个字段?我很确定这个不起作用:
tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, SubmVal)');
2。如何让这个populateDB(tx)
函数工作,就像物理延续一样(不按其他按钮或东西)。我是否需要像这样更改代码:
if (confirm('Are you sure you want to save this ' + SubmVal + ' into the database?')) {
tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, SubmVal)');}
3。如何使用函数打印表格的每一行?
为了尽可能多地帮助那些有同样问题的人,我提出了一个更普遍的问题。提前谢谢。
答案 0 :(得分:0)
基本的javascript字符串:
tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, SubmVal)');
^^^^^^^
由于SubmVal
位于字符串中,因此Javascript将其视为字符串中的所有其他内容 - 某些文本。这意味着您要告诉数据库引擎从不存在的字段中插入值。
你想要
tx.executeSql('INSERT INTO TEST (id, name) VALUES (1, ' + SubmVal + ')');
^^^^^^^^^^^^^^^
这样你就可以将JS变量连接到SQL字符串中。
请注意,这种构造让您对sql injection attacks开放。
如果SubmVal
不是数字,则也必须引用它。