• ベストアンサー

MySQL+PHP 特定レコードの更新と作成

MySQL+PHPの初心者です。 特定レコードの変更または新規作成のサンプルなどあればお教えいただけるでしょうか。 例えば特定商品の単価のレコードがあれば新しい単価に変更と そのレコードが無ければ新規にレコードを作成するようなケースになります。 VBAなどでは検索のSQL文からレコードセットを作成し レコードが無い場合は レコードセット名.addnewで必要なフィールドに 値をセットし レコードセット名.update 該当するレコードがあった場合は レコードセット名.edit で必要なフィールドに 値をセットし レコードセット名.updateなど簡単な処理なのですが MySQL+PHP の場合データの検索と新規レコードの単純な記述は ある程度はわかるのですが上記のようなケースは実際どのように 書かれているのかお教え願えると幸いです。 商品単価テーブルには商品コードと単価のフィールドになります。 よろしくお願いいたします。

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

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

>特定商品の単価のレコードがあれば新しい単価に変更と >そのレコードが無ければ新規にレコードを作成 考え方は2つ (1)単価を削除して、追加する (2)IGNOREを利用して追加して、更新する INSERTとUPDATEは構文が違うので2つのSQLを発行することになります。 なお、派生でREPLACE構文もありますが、処理的には(1)とおなじ 削除して追加をしているだけです。

amitiesys
質問者

お礼

アドバイスを頂きありがとうございます。 やはり異なるSQLを発行する必要があるんですね。 MS-Access+VBAのようにレコードセットそのものに 追加やアップデートができると思っておりました。 処理としては SELECT文で品番単価情報を検索    ・レコードがあれば UPDATE文で単価を更新    ・レコードがなければ INSERT文で新規レコードの追加 こんな感じでしょうか。

その他の回答 (1)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

ご使用のMYSQLのバージョンが分かりませんが、4.1.0以降であれば INSERT ... ON DUPLICATE KEY UPDATE 構文を使うといいかもしれません。 http://dev.mysql.com/doc/refman/5.1/ja/insert-on-duplicate.html

amitiesys
質問者

お礼

お教え頂きありがとうございます。 テーブルの仕様により使える便利な構文があるんですね。 参考になります。 ありがとうございました。