简而言之,我将编程作为一种爱好。我正在尝试将数据插入 Safari 5 中的 SQLite 数据库。
我不担心注入攻击,因为使用自制扩展程序,这仅用于从我访问的某些站点收集数据。
我的交易在循环的每次迭代中插入一行,其中包含来自“DOM 更改事件”的数据,最多迭代 20 次左右)没有看到正确传递给它的变量。调用“console.log(variable)”表明它们确实包含正确的数据 - 但 INSERT 不会在每条记录中插入正确的(不同的)数据,除了第一个正确递增的 var(通过我自己的递增机制在与其他行为不端的变量相同的范围)。
我读过“工人”很重要,但对他们一无所知。
注意 Windows 7 专业版
感激地收到任何指示 - 谢谢。
enter code here: HandleDOM_Change = function() {
for (p=0; p<snip.length; p++) {
title = snip[p].getElementsByClassName('title')[0].firstChild.textContent;
value = snip[p].getElementsByClassName('value')[0].firstChild.textContent;
lang = snip[p].getElementsByClassName('lang')[0].textContent;
if (hP[p] != lang) {
++count;
id = count;
db.transaction(function (tx) {
console.log("events:" +events+ " title:" +title+ " value/p+1/lang: " +value+ ", " +(p+1)+ ", " +lang);
tx.executeSql('INSERT INTO foo (id, text, time, name) VALUES (?, ?, ?, ?)', [id, title, value, lang]);
},myTransactionErrorCallback,myTransactionSuccessCallback);
hP[p] = lang;
}
}
++events;
}
//全局变量:事件 INTEGER、snip ARRAY、count INTEGER 请原谅愚蠢的语法问题 - 我必须删除一些箔条以使其可读 - 但本质仍然是控制台日志报告 vars 包含我想要的但 'tx .executeSql' 说不。
NB 在试图找到问题的过程中,所有约束都已从插入的值中删除 - 甚至在声明中都没有坚持主键(在全局级别较早发生)。还要澄清一下,“id”会正确递增并在数据库中记录,但其他三个插入时值不变 - 与日志报告相反(我意识到日志不输出 id,但确实如此在清洁之前 - 老实说)。
非常感谢。