我有以下代碼將數據插入到TestDB數據庫中,我可以插入和刪除所有行成功,但刪除一行不起作用。SQLite:無法刪除數據庫中的行
請告訴我代碼有什麼問題。我認爲問題來自函數deleteRow無法識別column1值。
感謝
<script>
var db = window.openDatabase("Test", "1.0", "Test DB", 1000000);
var column1= document.getElementById("column1");
var column2= document.getElementById("column2");
var column3= document.getElementById("column3");
var results = document.getElementById("results");
var id = document.getElementById('id');
var Delete = document.getElementById('Delete');
function InsertDB(){
if ((column1.value!='') && (column2.value!='') && (column3.value!='')) {
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS TestDB (id INTEGER, column1 TEXT, column2 TEXT, column3 TEXT)');
tx.executeSql('INSERT INTO TestDB (column1, column2, column3) VALUES (?, ?, ?)', [column1.value, column2.value, column3.value], ShowandReset);
});
}
else alert("Column cannot be empty");
}
function ShowDB() {
results.innerHTML = '';
db.transaction(function(tx) {
tx.executeSql("SELECT * FROM TestDB", [], function(tx, result) {
dataset = result.rows;
for (var i = 0, item = null; i < dataset.length; i++) {
item = dataset.item(i);
results.innerHTML += item['column1'] + ' , ' + item['column2'] + ' , ' + item['column3'] + ' ' + '<a href="#" onclick="deleteRow('+item['column1']+')"> Delete this row</a>' + '</br>';
}
});
});
}
function deleteRow(a) {
db.transaction(function(tx) {
tx.executeSql("DELETE FROM TestDB WHERE column1=a");
});
ShowDB();
}
function DeleteDB() {
db.transaction(function(tx) {
tx.executeSql("DELETE FROM TestDB");
});
ShowDB();
}
function resetForm(){
column1.value = '';
column2.value = '';
column3.value = '';
id.value = '';
}
function ShowandReset(){
resetForm();
ShowDB();
}
function LoadRow(i) {
var item = dataset.item(i);
column1.value = item['column1'];
column2.value = item['column2'];
column3.value = item['column3'];
id.value = item['id'];
}
</script>
不知道在哪裏以及如何將運行,但請記住,任何人都可以訪問您的網站,將能夠在數據庫上運行任意查詢。 –
如果您不確定某些內容,請使用命令解釋器來學習如何正確編寫請求。 –
此外,我同意@GrimaceofDespair,你可以使用防禦機制從您的網站上的攻擊。 Sql注入是破壞你的工作最常見的方式。 –