此代码必须提醒我添加到表中的内容。他没有警告变量“ hallo”的值。您知道这段代码有什么问题吗?

<html>
<body>
    <script>
        var db = openDatabase('neueDb', '1.0', "Test DB", 2 * 1024 * 1024);
        var hallo = "hallo1234";

            db.transaction(function (tx) {
                tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (log)');
                tx.executeSql('INSERT INTO LOGS (log) VALUES ("foobar")');
                tx.executeSql('INSERT INTO LOGS (log) VALUES ("logmsg")');
                tx.executeSql('INSERT INTO LOGS (log) VALUES (?)', hallo);
            });

            db.transaction(function (tx) {
                tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
                        var len = results.rows.length, i;

                        for (i = 0; i < len; i++) {
                            alert(results.rows.item(i).log);
                        }
                }, null);
        });
    </script>
</body>




感谢您的所有答案!
恋爱,
德克斯特

最佳答案

对我来说,在Chrome中执行tx.executeSql('INSERT INTO LOGS (log) VALUES (?)', hallo);时出现错误

VM109:1 Uncaught TypeError: Failed to execute 'executeSql' on 'SQLTransaction': The 2nd argument is neither an array, nor does it have indexed properties.(…)

我不知道为什么,我以前从未遇到这个错误。但是,如果我执行db.transaction(function (tx) { tx.executeSql('INSERT INTO LOGS (log) VALUES (?)', [hallo]); })则它正常工作,然后警报显示hallo值确定。

我认为您在插入值时出错,这就是为什么它不会收到警报的原因。

10-07 14:55