我有这个代码显示来自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);
});
}
答案 0 :(得分: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);
});
}