2011-05-29 165 views
1

我有這個代碼爲我的webdb,我嘗試刪除一個項目,並將訂單設置爲另一個,但它只更改最後一個項目。WebDb更新問題

for (var i=ordine2; i < lunghezza-1+ordine2; i++) { 
    var db = miodb.webdb.db; 
    var ordine3=ordine2+i+1; 
    var ordine4=ordine2+i; 
     db.transaction(function(tx){ 
     tx.executeSql("UPDATE todo SET ordine = " + "'" + ordine4 + "'" + " WHERE ordine=?", [ordine3],  
      miodb.webdb.onSuccess, 
      miodb.webdb.onError); 
     }); 
     } 

這是我的表格: id |內容| order

1 | 0 | 0 |

2 | 1 | 1 |

3 | 2 | 2 |

4 | 3 | 3 |

5 | 4 | 4 |

6 | 5 | 5 |

如果我刪除第一個項目,我希望所有其他項目將訂單更改爲當前訂單-1,但它不起作用,只有最後一項更改訂單,ordine2設置爲0,lunghezza是陣列長度。 我可以修復它?

回答

0

根本不需要循環。以下更新聲明怎麼樣?

UPDATE todo SET ordine = ordine - 1 

您可能需要添加適當的where子句,如「WHERE ordine> ordine2」。我不完全明白你在做什麼,所以我不能給你確切的代碼。

另外,你真的不應該在構建SQL語句時使用字符串連接,使用?對於每個參數,並將它們放在數組中,就像你爲ordine3所做的那樣,這樣你就知道它們將被正確地轉義。

+0

它的工作,非常感謝,我失去了一個小時,解決方案是: var db = miodb.webdb.db; db.transaction(函數(TX){ tx.executeSql( 「UPDATE SET待辦事項= ORDINE ORDINE-1 WHERE ORDINE>?」,[ordine2], miodb.webdb.onSuccess, miodb.webdb.onError); }); 我現在不是爲什麼我使用一個for,我想改變所有的項目之一。謝謝 – raxe 2011-05-29 16:49:36