(PHP 5, PECL sqlite >= 1.0.0)
sqlite_changes -- SQLiteDatabase->changes — Liefert die Anzahl der vom letzten SQL-Befehl geänderten Datenbankeinträge.
Objektorientierter Stil (Methode):
Liefert die Anzahl der Datenbankeinträgen, die durch den letzten SQL-Befehl an die Datenbankverbindung (dbhandle) geändert wurden.
Die SQLite-Datenbankressource, erzeugt durch sqlite_open(), wenn im prozeduralem Kontext genutzt. Dieser Parameter wird in der objektorientierten Notation nicht benötigt.
Liefert die Anzahl der geänderten Reihen.
Beispiel #1 Prozeduraler Stil
<?php
$dbhandle = sqlite_open('mysqlitedb');
$query = sqlite_query($dbhandle, "UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'");
if (!$query) {
exit('Fehler in Anfrage.');
} else {
echo 'Anzahl der geänderten Reihen: ', sqlite_changes($dbhandle);
}
?>
Beispiel #2 Objektorientierter Stil
<?php
$dbhandle = new SQLiteDatabase('mysqlitedb');
$query = $dbhandle->query("UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'");
if (!$query) {
exit('Fehler in der Anfrage.');
} else {
echo 'Anzahl der geänderten Reihen: ', $dbhandle->changes();
}
?>
When executing DELETEs, I found that adding an always true WHERE clause returns the number of rows deleted.
eg: "DELETE FROM my_table WHERE 1" will delete all the rows and sqlite_changes() will return the correct number of rows deleted.
When counting deleted records from the database, I realized that sqlite_changes() will return 0 if you are deleting all the records without including a WHERE clause.
So after "DELETE FROM users" sqlite_open() will print 0 even if rows where deleted, but if you use "DELETE FROM users WHERE 1" you will get the right result.
I had this problem on versions 5.0.4 and 4.4.0 under Windows servers.