2012-06-29 19 views
0

我一直坚持这一段时间了,我似乎无法将两个变量插入到表中。我会认为这个代码应该工作...如何在SQL表中插入两个变量

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

你是否收到任何错误信息?我敢打赌你的日期格式不正确... – Randy

+0

创建声明是否工作? – Jake1164

+0

Jake有一个好处 - 确保在至少一次运行后数据库中存在表... – Randy

回答

0

唯一的办法我能得到这个工作,它为我在Chrome是由cancatinating

这里是我所做的:

tx.executeSql('INSERT INTO LOGS (log, date_time) VALUES ("' + input + '", "' + time_stamp + '")'); 

我知道这会打开SQL注入,但我不能让它以任何其他方式工作。

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?

+0

我已经试过这种方式,它确实工作做一个变量。我也试过这个:tx.executeSql('INSERT INTO LOGS(log,date_time)VALUES(?,“SimpleString”)',[input]);它确实有效。 –

+0

我想添加一个新的行到我的表只有一个时间戳和任何输入。我不认为我理解你的最后一个陈述,我想为日志添加一个新条目,并且我想让id自动增加。但如果这是问题,我可以在没有身份证的情况下做出应有的赔偿 –

0

当我改变display_fields从

result.rows.item(i).date_time 

实施,

results.rows.item(i).date_time 
+0

虽然这是一个错字,它并没有为我带来改变。也使用Chrome。 –