1

私は自分の 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 | コンテンツ | 注文

1 | 0 | 0 |

2 | 1 | 1 |

3 | 2 | 2 |

4 | 3 | 3 |

5 | 4 | 4 |

6 | 5 | 5 |

最初のアイテムを削除した場合、他のすべてのアイテムの順序を現在の順序 -1 に変更したいのですが、機能しません。最後のアイテムのみが順序を変更します。ordine2 は 0 に設定され、lunghezza は配列の長さです。誰が修正できますか?

4

1 に答える 1

0

このためのループはまったく必要ありません。次の更新ステートメントはどうですか?

UPDATE todo SET ordine = ordine - 1

その上に適切なwhere句を追加する必要があるかもしれません。たとえば、「WHEREordine>ordine2」などです。あなたが何をしようとしているのか完全には理解していないので、正確なコードを提供することはできません。

また、SQLステートメントの作成に文字列連結を使用するべきではありません。?を使用してください。すべてのパラメーターについて、ordine3の場合と同じように配列に配置します。これにより、パラメーターが適切にエスケープされることがわかります。

于 2011-05-29T16:42:00.067 に答える