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

電脳備忘録
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」というのがあって、これはエラーが発生しても無視して処理を継続するけど、その場合データの追加は行わないそうです。

用途によって使い分けるとよさそうですね。

広告

ブログの維持費に充てるでございます・・・。