プロが教えるわが家の防犯対策術!

MySQL+PHPの初心者です。

特定レコードの変更または新規作成のサンプルなどあればお教えいただけるでしょうか。

例えば特定商品の単価のレコードがあれば新しい単価に変更と
そのレコードが無ければ新規にレコードを作成するようなケースになります。

VBAなどでは検索のSQL文からレコードセットを作成し
レコードが無い場合は レコードセット名.addnewで必要なフィールドに
値をセットし レコードセット名.update

該当するレコードがあった場合は レコードセット名.edit で必要なフィールドに
値をセットし レコードセット名.updateなど簡単な処理なのですが

MySQL+PHP の場合データの検索と新規レコードの単純な記述は
ある程度はわかるのですが上記のようなケースは実際どのように
書かれているのかお教え願えると幸いです。

商品単価テーブルには商品コードと単価のフィールドになります。

よろしくお願いいたします。

A 回答 (2件)

ご使用のMYSQLのバージョンが分かりませんが、4.1.0以降であれば


INSERT ... ON DUPLICATE KEY UPDATE 構文を使うといいかもしれません。

http://dev.mysql.com/doc/refman/5.1/ja/insert-on …
    • good
    • 0
この回答へのお礼

お教え頂きありがとうございます。

テーブルの仕様により使える便利な構文があるんですね。
参考になります。

ありがとうございました。

お礼日時:2011/01/24 15:45

>特定商品の単価のレコードがあれば新しい単価に変更と


>そのレコードが無ければ新規にレコードを作成

考え方は2つ
(1)単価を削除して、追加する
(2)IGNOREを利用して追加して、更新する

INSERTとUPDATEは構文が違うので2つのSQLを発行することになります。

なお、派生でREPLACE構文もありますが、処理的には(1)とおなじ
削除して追加をしているだけです。
    • good
    • 0
この回答へのお礼

アドバイスを頂きありがとうございます。

やはり異なるSQLを発行する必要があるんですね。

MS-Access+VBAのようにレコードセットそのものに
追加やアップデートができると思っておりました。


処理としては

SELECT文で品番単価情報を検索

   ・レコードがあれば UPDATE文で単価を更新


   ・レコードがなければ INSERT文で新規レコードの追加


こんな感じでしょうか。

お礼日時:2011/01/24 12:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す