PDOでデータのアップデート処理

電脳備忘録

本記事のソースコードの利用によって生じた損害について、当方は一切の責任を負いません。ご自身の判断と責任のもとで参照・ご利用ください。

この記事は最終更新から2年以上経過しています。

PDOでデータのアップデート処理をさせたのですが、プレースホルダを使ってデータアップデートする方法がよくわからず色々調べました。なんとか目的を果たすことが出来たので、自分向け備忘録として残しておこうと思います。

お約束

参照は自己責任でお願いします。

やりたかったこと

ItemテーブルはitemNameが主キーになっていて、itemNameに一致するデータがあったら一旦削除して追加、一致しないデータがあったら追加するという処理をしたかったので「REPLACE INTO」を使いました。 Autoincrementを設定してあるカラムが主キーの場合は、番号が削除され新たな番号が振られるのでやらないほうがよさそうですね。
$sthm = $dbh->prepare("REPLACE INTO Item (itemName,description,categories,price) VALUES (?, ?, ?, ?)");
別のサイトでは「ON DUPLICATE KEY UPDATE」を使用しました。こちらはアップデートのみを行うみたいです。上と同様にItemテーブルの主キーはitemNameに設定しています。
$sthm = $dbh->prepare("INSERT INTO Item
(itemName,description,categories,price) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE
itemName=?,description=?,categories=?,price=?");
とりあえず意図したとおりに動いていますがこれでいいのかな?

他に「INSERT IGNORE INTO」というのがあって、これはエラーが発生しても無視して処理を継続するけど、その場合データの追加は行わないそうです。

用途によって使い分けるとよさそうですね。
Newer
Older
Dark
Light
menu