PHP-Fusion
v.7.01
AP-Fusion
v7.02.05
Pimped-Fusion-AP
v0.09.03
March 19 2024 14:19:02
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

lom
06/04/2018 14:03
Мы рады, ждем девятку. Очень хочется пощупать

Alipapa
27/03/2018 22:16
Всем привет, все неисправности устранили, всё у нас работает

mukaton
30/10/2015 02:37
Не получается ничего скачать. Ошибка Not Found

Alipapa
06/10/2015 23:00
9-я версия php-fusion на подходе, следите за новостями

Alipapa
10/11/2014 11:24
Заметь, я дважды ответил через 3 минуты после вопроса, могли бы уже решить

Последние статьи
· О стабилизаторах нап...
· СМС и Вебмани
· TinyMCE для пользова...
· PCRE (Perl Compatibl...
· PCRE (Perl Compatibl...
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
PHP-Fusion 7 Bogatyr - бесп...
Моды, плагины
7094 1 Vveb--ws
08-10-2018 16:47
Php-Fusion v9. Первые впеча...
Вопросы по работе
4456 3 Vveb--ws
25-07-2018 13:46
Появился хэлп по PHP-Fusion...
Вопросы по работе
6696 7 Vveb--ws
25-07-2018 13:42
prestashop&ap-fusion
Вопросы по работе
17286 61 Alipapa
26-08-2014 10:29
Плагин магазина Ap-Shop
Моды, плагины
14516 70 Alipapa
18-08-2014 18:14
TinyMCE
Вопросы по работе
21046 55 Alipapa
27-07-2013 21:57
HTML-5
Моды, плагины
5411 1 Alipapa
15-06-2013 19:47
Мультиязычность в Pimped-Fu...
Ошибки, баги, глюки
6237 4 Papich
16-04-2013 12:39
Pimped-Fusion. Первые впеча...
Ошибки, баги, глюки
21576 127 Alipapa
18-12-2012 10:59
Ищу мод для расстановки код...
Моды, плагины
14957 55 Alipapa
17-09-2012 14:00
Как присоединить файл к лич...
Моды, плагины
8239 3 lom
27-05-2012 18:12
Что мне не нравится в после...
Вопросы по работе
6827 4 Alipapa
27-05-2012 18:08
Проблемы с добавлением кате...
Вопросы по работе
7707 5 Alipapa
27-05-2012 18:06

sqlite_create_aggregate

(PHP 5)

sqlite_create_aggregate --  Регистрирует агрегатную функцию для использования в SQL запросах

Описание

bool sqlite_create_aggregate ( resource dbhandle, string function_name, mixed step_func, mixed finalize_func [, int num_args] )

sqlite_create_aggregate() похожа на sqlite_create_function(), за исключением того, что регистрирует функцию, которая может быть использована для вычисления результата на основе всех записей результата запроса.

Главное отличие этой функции от sqlite_create_function() состоит в том, что для работы агрегатной функции неоходимы 2 функции; step_func вызывается для каждой записи из результат запроса. Эта функция должна аккумулировать результат и сохранять его в контекстной переменной. После обработки всех записей, вызывается finalize_func, которая должна обработать данные из контекстной переменной и вернуть результат.

Пример 1. Пример агрегатной функции max_length

<?php
$data
= array(
   
'one' ,
   
'two' ,
   
'three' ,
   
'four' ,
   
'five' ,
   
'six' ,
   
'seven' ,
   
'eight' ,
   
'nine' ,
   
'ten' ,
   );
$dbhandle = sqlite_open ( ':memory:' );
sqlite_query ( $dbhandle , "CREATE TABLE strings(a)" );
foreach (
$data as $str ) {
    
$str = sqlite_escape_string ( $str );
    
sqlite_query ( $dbhandle , "INSERT INTO strings VALUES ('$str')" );
}

function
max_len_step (& $context , $string )
{
    if (
strlen ( $string ) > $context ) {
        
$context = strlen ( $string );
    }
}

function
max_len_finalize (& $context )
{
    return
$context ;
}

sqlite_create_aggregate ( $dbhandle , 'max_len' , 'max_len_step' , 'max_len_finalize' );

var_dump ( sqlite_array_query ( $dbhandle , 'SELECT max_len(a) from strings' ));

?>

В этом примере, мы создаем агрегатную функцию, коорая возвращает длину самой длинной строки в одном из полей результата запроса. Для каждой записи, вызывается функция max_len_step, которой помимо строки передается контекстная переменная context. Эту переменню вы можете использовать по своему усмотрению для накопления результатов вычислений. В нашем примере, в этой переменной хранится максимальная длина строки; если длина строки string больше, чем значение, сохраненное в контекстной переменной, контекстной переменной присваивается новое значение.

После обработки всех записей, SQLite вызовет функцию max_len_finalize для определения результата агрегатной функции. Здесь можно было бы провести вычисления, основанные на значении контекстной переменной context, но в этом простейшем примере, все вычисления были произведены в процессе обработки запроса, и остается только вернуть полученное значение.

Замечание: Приведенный выше пример будет работать некорректно, если прменить созданную функцию к бинарным данным. Описание функции sqlite_udf_decode_binary() объясняет, почему это происходит и как этого избежать.

Подсказка: НЕ РЕКОМЕНДУЕТСЯ сохранять все полученные значения в контекстной переменной и затем производить все вычисления на последнем шаге, так как при этом SQLite может израсходовать большое количество памяти в процессе обработки запроса - представьте, сколько памяти потребуется, чтобы сохранить в памяти миллион записей, по 32 байта каждая.

Подсказка: sqlite_create_function() и sqlite_create_aggregate() могут быть использованы для переопределения встроенных функций SQLite.

Все функции PHP:
Навигация
· Новости
· Статьи
· Скачать
· Форум
· Ссылки
· Категории новостей
· Обратная связь
· Галерея
· Поиск
· CMS AP-Fusion. Отличия от PHP-Fusion
· Javascript справочник
· Техника
Сейчас на сайте
· Гостей: 2

· Пользователей: 0

· Всего пользователей: 453
· Новый пользователь: ZDA
Информеры
Загрузка файлов  +  -
9,904,039 уникальных посетителей Iceberg by Harly