如何在 SQL 表中插入两个变量

How To Insert Two Variables into a SQL Table

本文关键字:两个 变量 插入 SQL      更新时间:2023-09-26

我已经坚持了一段时间了,我似乎无法在表中插入两个变量。我认为这段代码应该可以工作...

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);
    });
}

任何帮助将不胜感激。

作为测试 - 尝试一下:

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?

当我将display_fields的实现从

result.rows.item(i).date_time

results.rows.item(i).date_time

我能让它工作的唯一方法是通过

这是我所做的:

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

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