PDO::sqliteCreateFunction

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

PDO::sqliteCreateFunction Registra una función definida por el usuario para utilizarla en sentencias SQL

Descripción

public PDO::sqliteCreateFunction(string $function_name, callable $callback, int $num_args = ?): bool
Advertencia

Esta función ha sido declarada EXPERIMENTAL. Su funcionamiento, nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Utilícela bajo su propia responsabilidad.

Este método permite registrar una función de PHP con SQLite como una FDU (Función Definida por el Usuario), y así poder invocarla desde dentro de sentencias SQL.

LA FDU se puede usar en cualquier sentencia SQL que pueda invocar funciones, tales como SELECT y UPDATE, y también en disparadores.

Parámetros

function_name

El nombre de la función usada en sentencias SQL.

callback

Una función de llamada de retorno para manejar la función SQL definida.

Nota: Las funciones de llamada de retorno deberían devolver un tipo comprendido por SQLite (esto es, del tipo escalar).

num_args

Una sugerencia para el analizador de SQLite si la función de llamada de retorno acepta un número predeterminado de argumentos.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ejemplos

Ejemplo #1 Ejemplo de PDO::sqliteCreateFunction()

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

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

En este ejemplo, se tiene una función que calcula la suma md5 de una cadena, y luego la inverte. Cuando se ejecuta la sentencia SQL, devuelve el valor del nombre del fichero transformado por dicha función. Los datos devueltos en $filas contienen el resultado procesado.

La belleza de esta técnica consiste en que no se necesario procesar el resultado usando un bucle foreach después de haber consultado los datos.

Sugerencia

Se puede usar PDO::sqliteCreateFunction y PDO::sqliteCreateAggregate para invalidar funciones SQL nativas de SQLite.

Nota:

Este método no está disponible con el controlador SQLite2. Use la API de sqlite de estilo antiguo en su lugar.

Ver también

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