• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:IDに欠番があった場合のupdate処理)

IDに欠番があった場合のupdate処理

このQ&Aのポイント
  • 配列でデータを受け取り、idに欠番があっても正常にデータをupdateする方法について教えてください。
  • 削除処理が行われた場合の欠番の穴埋めや、idのオートインクリメントの扱いについても教示してください。
  • 使用している環境はPHP 5.3.3とMySQL 5.0.95です。

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>$id = $_POST['id']; そもそも欠番のIDがPOSTされるというのが「あり得ない」ハズです。当該レコードを選択したらphpスクリプト側で自動的にセットするものであって、ユーザに入力してもらうものではありませんから。 もし「当該IDのデータの更新内容を入力している間に、他の端末から削除されてしまった」というケースを想定するならば、updateした更新件数が 0 だったら【更新できませんでした】とか【当該IDのデータがありません】などと表示して止まるしかありません。削除されたものはどうやってもupdate出来ません。

nazal2010
質問者

お礼

ご回答をいただき、ありがとうございます。 一応結論として、「 削除 」のアクションがあった場合にdelete文を 発行せずに、update文で該当のid( クリックされたid )のtestカラムの値を 空にしました。 データをselectする際に、 「 もしtestカラムのデータが空であれば、該当のidレコードは表示させない 」という 条件分岐をさせました。但し、その後のupdate文の発行でidがズレてしまうので、 hiddenで空のデータとidは埋め込んでおきます。 つまり、1,2,3,4,5,・・・,n、という絶対に欠番が出ないようにしました。 何だかスッキリしない感じですが、一応目的の形ににはなりましたのでご報告いたします。 参考になるご回答をいただき、大変感謝申し上げます。 ありがとうございました。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>もしidに欠番があっても該当する「 id 」に >正常にデータをupdateできる構文 考え方は2つ (1)そもそも存在しないIDをupdateするのだから存在しない時点でupdateはされないので問題ない たとえばidが1,2,4しかない時点で update ~ where id=3 としても条件節にヒットするデータがないので0件更新されておしまい (2)存在しないIDをupdateするときには新規に追加する これはINSERT ... ON DUPLICATE KEY UPDATE構文を使えばよい 同じ例でいえばidが1,2,4しかないとき ID=1はアップデータするけど,ID=3のときにはINSERTする いずれにしてもIDはデータを特定するためのものですから IDを振り直すという行為はしていけない さらに言えば、データ削除するのではなくdelete_flag的なカラムで コントロールすればIDに抜け番は発生しない (ただし抜け番が発生してもなんの問題もないし、むしろ削除フラグのついた IDに対してアップデートをしていいかどうかのルール決めが必要になるが)

nazal2010
質問者

お礼

ご回答をいただき、ありがとうございます。 一応結論として、「 削除 」のアクションがあった場合にdelete文を 発行せずに、update文で該当のid( クリックされたid )のtestカラムの値を 空にしました。 データをselectする際に、 「 もしtestカラムのデータが空であれば、該当のidレコードは表示させない 」という 条件分岐をさせました。但し、その後のupdate文の発行でidがズレてしまうので、 hiddenで空のデータとidは埋め込んでおきます。 つまり、1,2,3,4,5,・・・,n、という絶対に欠番が出ないようにしました。 何だかスッキリしない感じですが、一応目的の形ににはなりましたのでご報告いたします。 参考になるご回答をいただき、大変感謝申し上げます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう