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);
    });
  }

我有几个我正在尝试使用的这些值。所以我想指定列。如果我在函数中将列设置为产品,则上面的代码有效,在下面的代码中,我试图向函数发送一个附加参数,但它不起作用。我在这里做错了什么?

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