PDOのrowCount

ブログ移転記念?に記事を書いてみた。

PHPのPDOで気づいた点。

PDOStatement->rowCountはUPDATE,INSERT,DELETEで更新された行数を取得するメソッドですが、MySQLの場合は実際に変更された行数が取得されるとのこと。

INSERT,DELETEは問題ないですが、UPDATEの場合は更新内容が更新前と同じだとrowCountは0を返してきます。

http://www.php.net/manual/ja/function.mysql-affected-rows.phpに下記の記述があります。

UPDATE を使用する場合、MySQL では新旧の値が同じときには更新処理を行いません。

レコードをUPDATE→更新が0件だったらINSERTというロジックを使っている場合は要注意。

対策としてはUPDATE時には最終更新日みたいなカラムを更新するようにしています。