sqlite_changes
SQLiteDatabase::changes
(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)
sqlite_changes -- SQLiteDatabase::changes — Возвращает количество записей, которые были изменены последним SQL-запросом
Описание
$dbhandle
)Объектно-ориентированный стиль (метод):
Возвращает количество записей, которые были изменены последним
SQL-запросом к базе данных dbhandle
.
Список параметров
-
dbhandle
-
Ресурс базы данных SQLite, полученный из функции sqlite_open() в случае использования процедурного подхода. Этот параметр не требуется при использовании объектно-ориентированного подхода.
Возвращаемые значения
Возвращает количество измененных записей.
Примеры
Пример #1 Процедурный стиль
<?php
$dbhandle = sqlite_open('mysqlitedb');
$query = sqlite_query($dbhandle, "UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'");
if (!$query) {
exit('Ошибка в запросе.');
} else {
echo 'Количество измененных записей: ', sqlite_changes($dbhandle);
}
?>
Пример #2 Объектно-ориентированный стиль
<?php
$dbhandle = new SQLiteDatabase('mysqlitedb');
$query = $dbhandle->query("UPDATE users SET email='jDoe@example.com' WHERE username='jDoe'");
if (!$query) {
exit('Ошибка в запросе.');
} else {
echo 'Количество измененных записей: ', $dbhandle->changes();
}
?>
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- SQLite
- sqlite_array_query
- sqlite_busy_timeout
- sqlite_changes
- sqlite_close
- sqlite_column
- sqlite_create_aggregate
- sqlite_create_function
- sqlite_current
- sqlite_error_string
- sqlite_escape_string
- sqlite_exec
- sqlite_factory
- sqlite_fetch_all
- sqlite_fetch_array
- sqlite_fetch_column_types
- sqlite_fetch_object
- sqlite_fetch_single
- sqlite_fetch_string
- sqlite_field_name
- sqlite_has_more
- sqlite_has_prev
- sqlite_key
- sqlite_last_error
- sqlite_last_insert_rowid
- sqlite_libencoding
- sqlite_libversion
- sqlite_next
- sqlite_num_fields
- sqlite_num_rows
- sqlite_open
- sqlite_popen
- sqlite_prev
- sqlite_query
- sqlite_rewind
- sqlite_seek
- sqlite_single_query
- sqlite_udf_decode_binary
- sqlite_udf_encode_binary
- sqlite_unbuffered_query
- sqlite_valid
Коментарии
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.
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.