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 — Devuelve el número de filas que se han modificado en la última sentencia SQL
Descripción
int sqlite_changes
( resource $manejador_bd
)
Método que sigue el estilo orientado a objetos:
SQLiteDatabase
int changes
( void
)
Devuelve el número de filas que se han modificado en la última sentencia SQL ejecutada en la base de datos indicada con el parámetro manejador_bd .
Lista de parámetros
- manejador_bd
-
El recurso que identifica la base de datos SQLite (y que es el que devuelve la función sqlite_open()). Este parámetro no se requiere cuando se emplea el método orientado a objetos.
Ejemplos
Example #1 Ejemplo no orientado a objetos
<?php
$manejador_bd = sqlite_open('mysqlitedb');
$consulta = sqlite_query($manejador_bd, "UPDATE usuarios SET email='pedroperez@example.com' WHERE nombre_usuario='pedroperez'");
if (!$consulta) {
exit('Error en la consulta.');
} else {
echo 'Numero de filas modificadas: ', sqlite_changes($manejador_bd);
}
?>
Example #2 Ejemplo orientado a objetos
<?php
$manejador_bd = new SQLiteDatabase('mysqlitedb');
$consulta = $manejador_bd->query("UPDATE usuarios SET email='pedroperez@example.com' WHERE nombre_usuario='pedroperez'");
if (!$consulta) {
exit('Error en la consulta.');
} else {
echo 'Numero de filas modificadas: ', $manejador_bd->changes();
}
?>
sqlite_changes
bermi ferrer:at-akelos dotCom
28-Sep-2005 03:02
28-Sep-2005 03:02
