(PHP 5 >= 5.3.0, PHP 7, PHP 8)

SQLite3::changes 直近の SQL 文で変更 (あるいは挿入、削除) された行の数を返す


public SQLite3::changes(): int

直近の SQL 文で変更 (あるいは挿入、削除) された行の数を返します。




直近の SQL 文で変更 (あるいは挿入、削除) された行の数を表す int 値を返します。

例1 SQLite3::changes() の例

= new SQLite3('mysqlitedb.db');

$query = $db->exec('UPDATE counter SET views=0 WHERE page="test"');
if (
$query) {
'変更された行の数: ', $db->changes();

add a note

User Contributed Notes 2 notes

teclado at tandex dot com
8 years ago
There is an issue that may be meant or not, but in my case is annoying. If you have have a schema like the following:

pragma foreign_key = on;
create table parent (
id integer,
a varchar,
primary key (id asc)
create table child (
id integer,
b varchar,
a integer,
primary key (id asc),
foreign key (a) references a (id) on delete cascade on update cascade

When you try to delete a parent row (delete from parent where parent.id=?) it deletes all the childs referenced to this parent, but the method SQLite3::changes() is still returning 1, as if it only have deleted the parent.
krebs dot seb at googlemail dot com
12 years ago
It seems, that this method doesn't report the affected rows properly, when using with savepoints or a transaction.
To Top