Javascript 什么';从web数据库中删除记录的正确JS语法是什么?
我使用以下内容在HTML页面上使用innerHTML显示基于Javascript的webSQL数据(包含4个字段):Javascript 什么';从web数据库中删除记录的正确JS语法是什么?,javascript,web-sql,Javascript,Web Sql,我使用以下内容在HTML页面上使用innerHTML显示基于Javascript的webSQL数据(包含4个字段): var rowid = results.rows.item(i).id; document.getElementById("output2").innerHTML += "<table><tr><td><index type='button' class='buttonDel' onclick='delRecord(\"" + rowid
var rowid = results.rows.item(i).id;
document.getElementById("output2").innerHTML += "<table><tr><td><index type='button' class='buttonDel' onclick='delRecord(\"" + rowid + "\")' value='Delete'>" + results.rows.item(i).id + "</td><td>" + results.rows.item(i).data1 + "</td><td>" + results.rows.item(i).data2 + "</td><td>" + results.rows.item(i).data3 + "</td></tr></table>";
删除记录的正确语法是什么
以下是按钮的格式化方式:
function querySuccess(tx, results) {
var len = results.rows.length;
console.log("Returned rows = " + results.rows.length);
for (var i = 0; i < len; i++) {
var rowid = results.rows.item(i).id;
document.getElementById("output2").innerHTML +=
"<table><tr><td><index type='button' class='buttonDel' onclick='delRecord(\"" +
rowid + "\")' value='Delete'>" +
results.rows.item(i).id +
"</td><td>" + results.rows.item(i).data1 +
"</td><td>" + results.rows.item(i).data2 +
"</td><td>" + results.rows.item(i).data3 + "</td></tr></table>";
}
函数查询成功(发送,结果){
var len=results.rows.length;
log(“返回的行=“+results.rows.length”);
对于(var i=0;i正确的语法是(底层实现都使用SQLite、AFAIK。)
然而,有几个相关的问题:
使用的条件错误,SQL使用=
表示相等
rowid
作为字符串内容是错误的。该ID永远不会成为ID,因为没有进行“魔术替换”。相反,请使用参数化查询并指定绑定值
考虑:
function deleteRecord(rowid) {
var db = getCurrentDatabase();
db.transaction(
function (tx) {
tx.executeSql("DELETE FROM demo WHERE id = ?", [rowid]);
});
}
我还使用了一个闭包使rowid
易于访问。请参考一些更一般的例子。我认为它应该是“=”而不是“=”不,记录仍然存在。这不是赋值运算符,不是相等的吗?我看到没有生成任何错误。@Steve:SQL的语法与编程语言不同;)@FelixKling WebSQL使用JavaScript,但是:)嗯,=也不起作用,所以有点不对劲。谢谢!我的问题是我习惯了PHP/MySQL,但一旦我在用JavaScript尝试webSQL,我觉得自己有点力不从心。我不确定语法中是否应该有回调或其他内容。使用您的示例,我得到了“未捕获引用错误:getCurrentDatabase未定义”。在研究此问题时,搜索“getCurrentDatabase”没有显示任何结果。我还尝试了:var db=db_NAME([数据库]);你给我指出了正确的方向。谢谢!问题解决了。@Steve只是一个打开/获取数据库的占位符函数:)
function deleteRecord(rowid) {
var db = getCurrentDatabase();
db.transaction(
function (tx) {
tx.executeSql("DELETE FROM demo WHERE id = ?", [rowid]);
});
}