【PHP8.x】changesメソッドの使い方

changesメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

changesメソッドは、SQLite3クラスのインスタンスを通じて、直前のデータ操作文(INSERTUPDATEDELETE)によってデータベース内で実際に変更された行の数を取得するメソッドです。このメソッドは、最新のデータ操作がどれだけのレコードに影響を与えたかを確認する際に使用します。

具体的には、INSERT文が実行された場合は挿入された行の数を、UPDATE文が実行された場合は更新された行の数を、DELETE文が実行された場合は削除された行の数を整数値として返します。もし、UPDATE文やDELETE文が特定の条件に基づいて実行され、その条件に合致する行が一つもなかった場合、たとえ構文が正しくても変更された行は0とカウントされます。

このchangesメソッドは、トランザクション内で複数のデータ操作が行われた場合でも、それらの操作によって変更された行の合計数を返します。また、SELECT文のようなデータの参照のみを行う操作や、CREATE TABLEALTER TABLEなどのスキーマ定義文、VACUUMPRAGMAなどの管理コマンドを実行した直後では、常に0を返します。

この機能を利用することで、開発者はデータ操作の成否を検証したり、予期せぬ変更や期待通りの変更が行われたかどうかをプログラム内で確認したりすることが可能になります。例えば、ユーザーからの入力に基づいて特定のレコードを更新した際、実際にその更新が何件のデータに適用されたかを知りたい場合に役立ちます。

構文(syntax)

1<?php
2$db = new SQLite3('my_database.db');
3$db->exec('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)');
4$db->exec('INSERT INTO users (name) VALUES ("Alice")');
5$db->exec('UPDATE users SET name = "Bob" WHERE id = 1');
6$affectedRows = $db->changes();
7$db->close();
8?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

SQLite3::changesメソッドは、最後に実行されたINSERT、UPDATE、DELETE操作によって影響を受けた行数を整数で返します。

【PHP8.x】changesメソッドの使い方 | いっしー@Webエンジニア