sqlite_create_functionSQLiteDatabase::createFunction
Registra una función "regular" definida por el usuario para ser usada en sentencias SQL
&reftitle.description;
voidsqlite_create_functionresourcedbhandlestringfunction_namecallablecallbackintnum_args-1&style.oop; (método):publicvoidSQLiteDatabase::createFunctionstringfunction_namecallablecallbackintnum_args-1sqlite_create_function permite registrar una función PHP con SQLite como un UDF (User Defined
Function), para así poder ser llamada desde dentro de sus sentencias SQL.
La UDF puede ser usada en cualquier sentencia SQL que pueda llamar a funciones, tales como sentencias SELECT y UPDATE, y también en triggers.
&reftitle.parameters;
dbhandle
El recurso de base de datos devuelto desde sqlite_open.
Este parámetro no es requerido cuando se usa el método "Orientado a objetos".
function_name
El nombre de la función que se va a usar en las sentencias SQL.
callback
Función de retorno para manejar la función SQL definida.
Las funciones de retorno deben devolver un tipo que SQLite sea capaz de entender (por ejemplo tipo escalar).
num_args
Sugerencia para el intérprete de SQLite si la función acepta un número predeterminado de argumentos.
&sqlite.param-compat;
&reftitle.returnvalues;
&return.void;
&reftitle.examples;
Ejemplo de sqlite_create_function
]]>
En este ejemplo tenemos una función que calcula el valor md5 de un string, y luego lo pone del revés. Cuando se ejecuta la sentencia SQL, devuelve el valor del nombre de fichero transformado por otra función. Los datos devueltos en $rows contienen el resultado de la consulta procesada.
La belleza de esta técnica es que no se necesita procesar el resultado utilizando un loop &foreach; despues de que se hayan consultado los datos.
PHP registra una función especial llamada php
cuando la base de datos se abre por primera vez. La función php puede ser usada para llamar cualquier función PHP sin tener que registrarla primero.
Ejemplo de uso de la función PHP
]]>
Este ejemplo llamará la función md5 en cada columna
filename en la base de datos y devolverá el resultado en $rows
Por razones de funcionamiento, PHP no codifica/descodifica automaticamente datos binarios pasados para y desde los UDFs. Es necesario codificar/descodificar manualmente los parámetros y valores devueltos si se necesita procesar los datos binarios de esta manera.
Echar un vistazo a sqlite_udf_encode_binary
y sqlite_udf_decode_binary para más información.
No se recomienda usar UDFs para manejar el proceso de datos binarios, a menos que el alto rendimiento no sea un requisito indispensable para su aplicación.
Puede utilizar sqlite_create_function y
sqlite_create_aggregate para reemplazar las funciones SQL nativas de SQLite.
&reftitle.seealso;
sqlite_create_aggregate