PDO::sqliteCreateFunction

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo_sqlite >= 1.0.0)

PDO::sqliteCreateFunction Registra uma Função Definida pelo Usuário para uso em declarações SQL

Descrição

public PDO::sqliteCreateFunction(
    string $function_name,
    callable $callback,
    int $num_args = -1,
    int $flags = 0
): bool
Aviso

Esta função é EXPERIMENTAL. O comportamento desta função, seu nome e documentação poderão mudar sem aviso prévio em futuras versões do PHP. Use por sua conta e risco.

Este método permite registrar uma função PHP com o SQLite como uma UDF (Função Definida pelo Usuário), para que possa ser chamada a partir das declarações SQL.

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

Parâmetros

function_name

O nome da função usada nas declarações SQL.

callback

Função callback para tratar a função SQL definida.

Nota: As funções callback devem retornar um tipo reconhecido pelo SQLite (ou seja, um tipo escalar).

Esta função precisa ser definida como:

callback(mixed $value, mixed ...$values): mixed
value

O primeiro argumento passado para a função SQL.

values

Argumentos adicionais passados para a função SQL.

num_args

O número de argumentos que a função SQL utiliza. Se este parâmetro for -1, então a função SQL poderá receber qualquer número de argumentos.

flags

Uma conjunção bit a bit de flags. Atualmente, apenas PDO::SQLITE_DETERMINISTIC é suportada, o que especifica que a função sempre retorna o mesmo resultado dadas as mesmas entradas em uma única instrução SQL.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

Versão Descrição
7.1.4 O parâmetro flags foi adicionado.

Exemplos

Exemplo #1 Exemplo de PDO::sqliteCreateFunction()

<?php
function md5_and_reverse($string)
{
return
strrev(md5($string));
}

$db = new PDO('sqlite:sqlitedb');
$db->sqliteCreateFunction('md5rev', 'md5_and_reverse', 1);
$rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll();
?>

Neste exemplo, existe uma função que calcula a soma md5 de uma string e depois a inverte. Quando a instrução SQL é executada, ela retorna o valor do nome do arquivo transformado pela função. Os dados retornados em $rows contêm o resultado processado.

A beleza desta técnica é que não é necessário processar o resultado usando um laço foreach após os dados terem sido consultados.

Dica

PDO::sqliteCreateFunction e PDO::sqliteCreateAggregate podem ser usados para substituir funções SQL nativas do SQLite.

Veja Também

add a note add a note

User Contributed Notes 1 note

up
0
RoboTamer
12 years ago
groups looks like this '1,2,3,999'

<?php
/**
* int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
*/
$dbUser = new PDO('sqlite:'.ROOT.'/var/db/users.db3');
$dbUser->sqliteCreateFunction('strpos', 'strpos', 2);
$sql = 'SELECT username FROM users WHERE strpos(groups,",2,");';
$rows = $dbUser->query($sql)->fetchAll(PDO::FETCH_ASSOC);
print_r($rows);

?>
To Top