2016-12-02 3 views
0

このコードは、テーブルに追加するものに警告する必要があります。彼は変数 "hallo"の値を警告していません。このコードで何が間違っているのか分かりますか?Web-SQLでの変数の使用

<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> 

すべての答えをありがとう! Loveで、 デクスター

答えて

1

あなたはdb.transactionが非同期であるという考えを忘れています。

まず、すべての行を挿入してから選択します。それは実際に起こることではありません。もちろんtx.executeSql('SELECT * FROM LOGS'

b.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]); 
     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); 
    }); 

は、理想的には、別の関数内にラップする必要があります。

これは何が必要roughtlyです。

また、使用する構文に関する@Jorgeのコメントにも注意してください。私にとって

+0

あなたのコードも機能していません。エラーを返すには、私の答えで「hallo」値を挿入するときに述べた。 – Jorge

1

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.(…)

を実行するときに、Chromeで私は前にこのエラーを持っていなかった理由は、私にはわからないエラーが発生します。しかし、db.transaction(function (tx) { tx.executeSql('INSERT INTO LOGS (log) VALUES (?)', [hallo]); })を正しく実行すると、警告が表示され、halloの値がOKになります。

私は、値を挿入する際にエラーが発生していると思われます。そのため、警告が表示されません。

+0

ありがとうございます。 –

+0

問題ありません!私にとってそれは奇妙な行動のようなものです...私はなぜそれを見つけようとします。 – Jorge