PHP | MySQLのUPDATEで既存の数値に1を足し引きしたデータで更新する方法

2023-03-17PHP MySQL,PHP

PHP | MySQLのUPDATEで既存の数値に1を足し引きしたデータで更新する方法

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

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

既存のデータから1を加算した数値に更新する

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

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

例えば、カラム名「col」の値が「3」だった場合「4」に更新されます。

// クエリ
$sql = "UPDATE `table_name` SET col = col + 1 WHERE id = 1";
// クエリを実行
$res = $mysqli->query($sql);

既存のデータから1を減算した数値に更新する

1を減算した値に更新します。

以下のサンプルコードでは例えば、カラム名「col」の値が「3」だった場合、「2」に更新されます。

// クエリ
$sql = "UPDATE `table_name` SET col = col - 1 WHERE id = 1";
// クエリを実行
$res = $mysqli->query($sql);

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

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

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

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

以下のサンプルコードでは、カラム名「col」の値が「3」だった場合、「12」に更新されます。

// クエリ
$sql = "UPDATE `table_name` SET col = (col + 1) * 3 WHERE id = 1";
// クエリを実行
$res = $mysqli->query($sql);

PHP MySQL,PHP

Posted by Yousuke.U