0

Web SQL データベースからテキストを表示する次のコードがあります。

<span contenteditable="true" 
    onkeyup="updateRecord('+item['id']+', this)">' + item['product'] + '</span>

テキストを編集すると、updateRecord 関数が呼び出され、値が更新されます。

  function updateRecord(id, textEl) {
    db.transaction(function(tx) {
      tx.executeSql("UPDATE products SET product = ? WHERE id = ?", 
          [textEl.innerHTML, id], null, onError);
    });
  }

私はこれらの値のいくつかを使用しようとしています。そこで、列を指定したいと思います。上記のコードは、関数で列をproductに設定すると機能します。次のコードでは、追加のパラメーターを関数に送信しようとしていますが、機能していません。ここで何が間違っていますか?

  <span contenteditable="true" 
        onkeyup="updateRecord('+item['id']+', 'product', this)">'+ item['product'] + '</span>

  function updateRecord(id, column, textEl) {
    db.transaction(function(tx) {
      tx.executeSql("UPDATE products SET ? = ? WHERE id = ?", 
          [column, textEl.innerHTML, id], null, onError);
    });
  }
4

1 に答える 1

1

フルボディのDBMSと同様に、列名をパラメーター化することはできず、値のみをパラメーター化できます。だからあなたはこのようにする必要があります

  <span contenteditable="true" 
        onkeyup="updateRecord('+item['id']+', 'product', this)">'+ item['product'] + '</span>

  function updateRecord(id, column, textEl) {
    db.transaction(function(tx) {
      tx.executeSql("UPDATE products SET " + column + " = ? WHERE id = ?", 
          [column, textEl.innerHTML, id], null, onError);
    });
  }
于 2011-02-01T22:20:26.367 に答える