0

私はしばらくこれに固執しており、2 つの変数をテーブルに挿入できないようです。このコードは機能するはずだと思います...

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

どんな助けでも大歓迎です。

4

3 に答える 3

0

display_fields の実装を

result.rows.item(i).date_time

results.rows.item(i).date_time
于 2012-06-29T17:40:08.637 に答える
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 にする代わりに、広告ログを作成するという意味ですか?

于 2012-06-29T17:38:10.280 に答える
0

これを機能させる唯一の方法は、キャンセルすることでした

これが私がしたことです:

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

これがSQLインジェクションにつながることは知っていますが、他の方法で機能させることはできませんでした.

于 2012-07-03T15:20:16.857 に答える