お約束
参照は自己責任でお願いします。やりたかったこと
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」というのがあって、これはエラーが発生しても無視して処理を継続するけど、その場合データの追加は行わないそうです。
用途によって使い分けるとよさそうですね。