(PHP 8 >= 8.4.0)
Pdo\Sqlite::createFunction — Registra una función de usuario para su uso en las sentencias SQL
$function_name
,$callback
,$num_args
= -1,$flags
= 0
Este método permite que las funciones PHP sean registradas con SQLite como
funciones definidas por el usuario, de modo que puedan ser llamadas en las consultas SQL.
La función definida puede ser utilizada en cualquier consulta SQL que permita llamadas a funciones,
por ejemplo SELECT
, UPDATE
, o disparadores.
Utilizando este método, es posible reemplazar las funciones SQL nativas.
function_name
callback
Nota: La retrollamada debe retornar un tipo comprendido por SQLite (es decir, tipo escalar).
Esta función debe ser definida como:
value
El primer argumento pasado a la función SQL.
values
Los argumentos adicionales pasados a la función SQL.
num_args
-1
,
entonces la función SQL puede tomar cualquier número de argumentos.
flags
Pdo\Sqlite::DETERMINISTIC
es soportado,
lo que especifica que la función retorna siempre el mismo resultado
dados los mismos valores de entrada en una sola sentencia SQL.
Ejemplo #1 Ejemplo de Pdo\Sqlite::createFunction()
En este ejemplo, tenemos una función que calcula la suma SHA256 de una string, luego la invierte. Cuando la sentencia SQL es ejecutada, retorna el valor del nombre de fichero transformado por nuestra función. Los datos retornados en $rows contienen el resultado procesado.
La ventaja de esta técnica es que no es necesario procesar el
resultado utilizando un bucle foreach
después de la ejecución de la consulta.
<?php
function sha256_and_reverse($string)
{
return strrev(hash('sha256', $string));
}
$db = new Pdo\Sqlite('sqlite::sqlitedb');
$db->sqliteCreateFunction('sha256rev', 'sha256_and_reverse', 1);
$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll();
?>