1

html テーブルとして表示される mysql テーブルがあります。ユーザーは、行を更新、挿入、および削除できます。保存ボタンがクリックされたら、mysql テーブルを更新したいと思います。

私の現在の方法は、保存時にすべての行を削除し、すべての新しい行を挿入することです。ただし、挿入機能にエラーがあり、すべてを削除した場合に問題が発生しました。

この方法はずさんで、不要な削除を引き起こしているように感じます。1 つのセルを更新するためだけに、50 行を削除および挿入する可能性があります。

mysqlでテーブルを更新する適切な方法は何ですか?

編集:私の現在の作業ソリューションはこれです

  • 削除された列をテーブルに追加します。デフォルト値は 0 です

  • 行の各セルに対してテーブルに一意のインデックスを作成します (ID を除く)

  • テーブルが保存されたら、すべての行を更新し、削除済みを設定 = 1

  • テーブルの各行に対して、mysql に挿入し、重複セットを削除 = 0

  • 削除された行のみを表示 = 0

削除済み = 1 の行を削除してクリーンアップすることもできますが、私はそれをバックアップとして保持したいと考えています。

このソリューションでは、次の 2 つの問題が発生します。

  • 2 つの同一の行は許可されません。mysql は、重複が見つかった場合、deleted = 0 を置き換えるだけです

  • 行内のセルが変更されると、新しい行が作成され、古い行が単純に更新されるわけではありません。これは修正される可能性がありますが、編集を「元に戻す」機能があることはほとんど気にしません。

4

3 に答える 3

0

「更新」については w3schools をご覧ください。

U は、次の行に沿って何かを行う必要があります。

Update (tablename)
Set (columnname)='newvalue'
Where id='idYouWantToUpdate'

更新はあなたがやりたいことです。すべてを削除してすべてを再度挿入するのではありません。

于 2013-02-18T00:33:55.390 に答える
0

どうすればいいのか、2つのアイデアがあります。

1.

各行に ID があれば、更新を直接処理できます。ただのユーザー - > DB。変更を適用できなかった場合、何も削除されません。

1.| ジェーン | 20

2.| フィリップ | 30

3.| ルーカス | 50

update "2" のようなクエリを生成し、彼の年齢を 30 から 20 に置き換えてから、ウィンドウを更新します。更新が処理され、すべてを削除する必要はありません。更新後、新しい html テーブルがすべての変更とともに書き出されます。

2.

メソッドを使用し続けますが、並列テーブルで更新を処理できることを確認してください。

  • 可能であれば、ユーザーにテーブルを表示し、ユーザーが承認した後、パラレル テーブルのパラレル コンテンツが使用済みテーブルに挿入されます。

  • できなかった場合は、エラーを書き込み、何もしません。

于 2013-02-17T19:24:43.323 に答える
0

今週、私は同じ問題を抱えていました。私の決定は、リストデータテーブルをセッション変数に保存することでした。後で、この変数リストを mysql に挿入します。この挿入スクリプトで例外が発生した場合、トランザクションをロールバックして操作を元に戻します。ただし、例外なく、すべての行が削除され、セッション変数がクリアされます。このプロセスも改善する必要があります。

于 2013-02-17T19:26:51.723 に答える