- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP+MySQLでデータの削除→更新)
PHP+MySQLでデータの削除→更新
このQ&Aのポイント
- PHP+MySQLを使用して、リストのデータを削除→更新する方法について知りたいです。
- 削除したデータ以降のIDを繰り上げる際に、重複エラーが発生してしまいます。原因は何でしょうか?
- 削除したデータ以降のIDを正しく繰り上げる方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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が大きいとエラーもなくうまく削除、更新できました。」 は多分偶然うまく行ったのではないかと思います。
その他の回答 (2)
- duron
- ベストアンサー率77% (73/94)
回答No.3
$id=5; $sql="update リストテーブル set ID = ID - 1 where ID > ".$id."order by ID"; ↑のようにSQLの編集処理の中で「order by」の前に半角スペースを入れ忘れたりしてませんか?
質問者
お礼
再度回答ありがとうございます。 半角スペースは入っていました。 Accessのクエリに貼り付けてみましたが、orderのところで 「SQL ステートメントの最後には、セミコロン (;) が必要です」 というエラーが出て、実行できませんでした。
質問者
補足
結局ループで一つひとつ更新する方法に変更しました。 アドバイス感謝です。
- nda23
- ベストアンサー率54% (777/1415)
回答No.1
1回毎(DeleteとUpdateの組み合わせ)に トランザクションを切ったらどうですか?
質問者
お礼
ありがとうございます。 やってみます!
お礼
ありがとうございます。 原因はそれかもしれません! しかしorder byをつけたところ、order by以降がまるまるsyntaxエラーになってしまい、うまくいきませんでした。 別の方法で順番に更新できるようやってみます。