• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP+MySQLでデータの削除→更新)

PHP+MySQLでデータの削除→更新

このQ&Aのポイント
  • PHP+MySQLを使用して、リストのデータを削除→更新する方法について知りたいです。
  • 削除したデータ以降のIDを繰り上げる際に、重複エラーが発生してしまいます。原因は何でしょうか?
  • 削除したデータ以降のIDを正しく繰り上げる方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.2

UPDATEにORDERBYを指定してみてください。 update リストテーブル set ID = ID - 1 where ID > 5 order by ID 「削除されたIDが5なら5を削除後、6が5、7が6…になる」 6が5になる前に7を6にしようとしているのかもしれません。 「また、2回目のIDが大きいとエラーもなくうまく削除、更新できました。」 は多分偶然うまく行ったのではないかと思います。

labilion
質問者

お礼

ありがとうございます。 原因はそれかもしれません! しかしorder byをつけたところ、order by以降がまるまるsyntaxエラーになってしまい、うまくいきませんでした。 別の方法で順番に更新できるようやってみます。

その他の回答 (2)

  • duron
  • ベストアンサー率77% (73/94)
回答No.3

$id=5; $sql="update リストテーブル set ID = ID - 1 where ID > ".$id."order by ID"; ↑のようにSQLの編集処理の中で「order by」の前に半角スペースを入れ忘れたりしてませんか?

labilion
質問者

お礼

再度回答ありがとうございます。 半角スペースは入っていました。 Accessのクエリに貼り付けてみましたが、orderのところで 「SQL ステートメントの最後には、セミコロン (;) が必要です」 というエラーが出て、実行できませんでした。

labilion
質問者

補足

結局ループで一つひとつ更新する方法に変更しました。 アドバイス感謝です。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

1回毎(DeleteとUpdateの組み合わせ)に トランザクションを切ったらどうですか?

labilion
質問者

お礼

ありがとうございます。 やってみます!

関連するQ&A