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.
sqlite_changes
SQLiteDatabase->changes
(PHP 5, PECL sqlite:1.0-1.0.3)
sqlite_changes -- SQLiteDatabase->changes — Retourne le nombre de lignes qui ont été modifiées par la dernière requête SQLite
Description
int sqlite_changes
( resource $dbhandle
)
Style orienté objet :
SQLiteDatabase
int changes
( void
)
sqlite_changes() retourne le nombre de lignes qui ont été modifiées par la dernière requête SQLite, exécutée dans la base db .
Liste de paramètres
- dbhandle
-
La ressource de base de données SQLite; retournée par sqlite_open() lorsqu'utilisée de manière procédurale. Ce paramètre n'est pas requis si vous utilisez la méthode orientée objet.
Exemples
Exemple #1 Style procédural
<?php
$dbhandle = sqlite_open('mysqlitedb');
$query = sqlite_query($dbhandle, "UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'");
if (!$query) {
exit('Erreur dans la requête.');
} else {
echo 'Nombre de lignes modifiées : ', sqlite_changes($dbhandle);
}
?>
Exemple #2 Style orienté objet
<?php
$dbhandle = new SQLiteDatabase('mysqlitedb');
$query = $dbhandle->query("UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'");
if (!$query) {
exit('Erreur dans la requête.');
} else {
echo 'Nombre de lignes modifiées : ', $dbhandle->changes();
}
?>
sqlite_changes
bermi ferrer:at-akelos dotCom
28-Sep-2005 03:02
28-Sep-2005 03:02
