我已经坚持了一段时间了,我似乎无法在表格中插入两个变量。我认为这段代码应该有用......
var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024);
function submit()
{
var input = document.getElementById("save_name").value;
var msg;
var time_stamp = new Date();
db.transaction(function (tx)
{
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id auto_increment, date_time varchar(128), log varchar(64))');
tx.executeSql('INSERT INTO LOGS (log, date_time) VALUES (?, ?)', [input, time_stamp]); // <--Problem here!
msg = '<p>Log message created and row inserted.</p>';
document.querySelector('#status').innerHTML = msg;
});
}
但它没有将我的变量插入我的表格。
这是我的打印功能:
function display_fields()
{
db.transaction(function (tx)
{
tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
var len = results.rows.length, i;
msg = "<p>Found rows: " + len + "</p>";
document.querySelector('#status').innerHTML += msg;
for (i = 0; i < len; i++)
{
msg = "<p><b>" + results.rows.item(i).log + " " + result.rows.item(i).date_time + "</b></p>";
document.querySelector('#status').innerHTML += msg;
}
}, null);
});
}
任何帮助将不胜感激。
答案 0 :(得分:0)
作为测试 - 尝试这种方式:
db.transaction(function (tx)
{
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id auto_increment, date_time varchar(128), log varchar(64))');
tx.executeSql('INSERT INTO LOGS ( log ) VALUES (?)', [input]); // <--Problem here!
msg = '<p>Log message created and row inserted.</p>';
document.querySelector('#status').innerHTML = msg;
});
如果这样做,那么你的日期格式很差。 此外,您可以向表中添加触发器以自动插入时间,而不是让客户端执行此操作...
另外 - 你的意思是广告日志而不是让id为auto_incrementing吗?
答案 1 :(得分:0)
当我从
更改display_fields的实现时,它适用于Chromeresult.rows.item(i).date_time
到
results.rows.item(i).date_time
答案 2 :(得分:0)
我能让这个工作的唯一方法是通过cancatinating
这是我做的:
tx.executeSql('INSERT INTO LOGS (log, date_time) VALUES ("' + input + '", "' + time_stamp + '")');
我知道这可以打开SQL注入,但我不能让它以任何其他方式工作。