sqlite_create_aggregate
sqlite_current
SQLite Funções
PHP Manual

# sqlite_create_function

(PHP 5 < 5.4.0, sqlite >= 1.0.0)

sqlite_create_function — Registra uma Função Definida pelo Usuário (UDF) para usar em SQL.

### Descrição

bool sqlite_create_function ( resource `$dbhandle` , string `$function_name` , mixed `$callback` [, int `$numero_de_argumentos` ] )

sqlite_create_function() permite a você registrar uma função do PHP para usar com o SQLite como uma UDF (Função Definida pelo Usuário), assim ela pode ser usada apartir de suas SQLs.

O parâmetro `dbhandle` especifica o banco de dados que você quer estender, `function_name` especifica no nome da função que você quer usar em seus SQL, `callback` é qualquer função valida(função criada com function) que deve ser chamada para cuidar da função SQL. O parâmetro opcional `numero_de_argumentos` é usado como uma dica pelo interpretador do SQLite. É recomendado que você especifique um valor apenas se sua função aceitar sempre um numero fixo de parâmetros.

A UDF pode ser usada em qualquer SQL que possa chamar funções, como SELECT e UPDATE, também em triggers.

Exemplo #1 Exemplo de sqlite_create_function()

`<?php
function md5_and_reverse($string)
{
return strrev(md5($string));
}
if ($dbhandle = sqlite_open('mysqlitedb', 0666, $sqliteerror)) {
sqlite_create_function($dbhandle, 'md5rev', 'md5_and_reverse', 1);
$sql = 'SELECT md5rev(filename) FROM files';
$rows = sqlite_array_query($dbhandle, $sql);
} else {
echo 'Erro ao abrir o banco de dados sqlite: ' . $sqliteerror;
exit;
}
?>`

Neste exemplo, nós temos uma função que calcula a soma md5 de uma string e a reverte. Quando a SQL é executada, retorna o valor de filename transformado pela nossa função. Os dados retornados em `$rows` contém o resultado processado.

A beleza desta tecnica é que você não precisa processar o resultado usando um loop foreach() depois de ter feito a query na tabela.

O PHP registra uma função chamada php quando o banco de dados é aberto. A função php pode ser usada para chamar qualquer função do PHP sem precisar registrar ela antes.

Exemplo #2 Exemplo de como usar a função php

`<?php
$rows = sqlite_array_query($dbhandle, "SELECT php('md5', filename) from files");
?>`

Esta função irá chamar a função md5() para cada coluna filename na tabela e retornar o resultado em `$rows`

> Nota:

> Por razões de velocidade, O PHP não irá codificar/decodificar dados binários passados para e das UDF´s. Você precisa manualmente codificar/decodificar os parâmetros e valores de retorno de precisar lidar com dados binários desta maneira. De uma olhada em sqlite_udf_encode_binary() e sqlite_udf_decode_binary() para maiores detalhes.

Dica

Não é recomendado usar UDF's para procassar dados binários, a menos que velocidade não seja um requerimento para a sua aplicação.

Dica

Você pode usar sqlite_create_function() e sqlite_create_aggregate() para sobrescrever as funções nativas de SQL do SQLite.

Veja também sqlite_create_aggregate().

sqlite_create_aggregate
sqlite_current
SQLite Funções
PHP Manual