かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

PHP PDO UPDATE時にそのまま値をインクリメント/デクリメントしたい。

前もって現在の値を取得しなくても、
UPDATEのSQLのSET節でインクリメントなら カラム名 = カラム名 + 1、デクリメントなら カラム名 = カラム名 - 1という形で記述すれば変更できる。

<?php
$pdo; // new PDO() 
$sql = "UPDATE {$table}
  SET
    col_a = col_a + 1,
    col_b = col_b + 1,
    col_c = :col_c_value
  WHERE
    id = :id
";
$stmt = $pdo->prepare($sql);
// 略

特定のインクリメントに限らず特定の数の足し引きはこれで出来そう。(掛け算・割り算は試していてない。)

久しぶりにPHPを触っていました。ちょっと触らないと直ぐ忘れてしまうのです!
INSERTとかUPDATEとかした時に、そのまま追加・変更したデータの行を丸っと取得する方法ってありますか? いつも変更後に改めてSELECTして取得しているのだけれど、なんか無駄にDBにアクセスしている気がしてて...


[参考]