要するに、私は趣味でプログラミングしています。Safari 5 で SQLite データベースにデータを INSERT しようとしています。
自家製の拡張機能を使用しているため、インジェクション攻撃の心配はありません。これは、アクセスするサイトからデータを収集するためだけに使用するためです。
私のトランザクションは、「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;
}
//グローバル変数: events INTEGER, snip ARRAY, count INTEGER ばかげた構文の問題をお許しください - 読みやすくするために一部のもみ殻を削除する必要がありました - しかし本質は、変数に必要なものが含まれていることをコンソール ログが報告することにありますが、'tx .executeSql' はいいえと言います。
注意: 問題を見つけようとして、挿入された値からすべての制約が削除されました。宣言では主キーでさえ主張されていません (これはグローバル レベルで以前に発生します)。また、明確にするために、「id」は適切にインクリメントされ、データベースに記録されますが、他の3つは変更されない値で挿入されます-ログレポートとは対照的です(ログはIDを出力しないことに気付きましたが、出力しましたクレンジング前 - 正直に)。
どうもありがとう。