PHP | MySQLiのUPDATEで既存の数値に+1をしてデータを更新する方法

PHP,PHP MySQL

MySQLiのUPDATEで既存の数値に+1をしてデータを更新する方法

MySQLiのUPDATE関数は、更新対象が数値(int)の場合、あらかじめSELECT文で元のデータを読み込まなくても既存のデータの数値に計算式を与えて計算後の数値に更新することが可能です。

上記した既存のデータの数値というのは、該当カラムの数値でなくても機能します。

既存の数値に+1をしてデータを更新する方法

よく使われる手法として、アクセスカウントや記事数などをデータに格納しておくために、既存の数値に1をプラスしてデータを更新する方法があります。

以下のサンプルの場合、既存のカラム(col)に入っている数値に1を加算した結果にデータを書き換えています。

$res = $mysqli->query("UPDATE `table` SET col = col + 1 WHERE id = 1");
if (!$res) {error_log($mysqli->error);exit;}

//colの値が3だった場合、4に更新される

ほかのカラム名の値や、計算式も代入可能

「col = col – 1」とすれば1を減算した値に更新され、「col = col * 5」とすれば5を乗算した値に更新されます。

また、ほかのカラム名の値も利用でき、例えば「col = id + 1」とすれば、idに1を加算した値が新しいcolの値として更新されます。

加算、減算、乗算などを組み合わせた計算式も記述可能で、「col = (col + 1) * 3」といった記述も可能です。

$res = $mysqli->query("UPDATE `table` SET col = (col + 1) * 3 WHERE id = 1");
if (!$res) {error_log($mysqli->error);exit;}

//colの値が3だった場合、12に更新される

PHP,PHP MySQL

Posted by Yousuke.U