(PHP 5)
sqlite_create_function
(no version information, might be only in CVS)
SQLiteDatabase->createFunction --
Registra una FDU (función definida por el usuario) normal para su uso en sentencias SQL
Descripción
void
sqlite_create_function ( resource manejador_bd, string nombre_funcion, callback callback [, int numero_argumentos] )
Método que sigue el estilo orientado a objetos:
class
SQLiteDatabase {
void
createFunction ( string nombre_funcion, callback callback [, int numero_argumentos] )
}
sqlite_create_function() permite registrar una función PHP
para que SQLite la emplee como FDU (función definida por el usuario).
De esta forma, la función se puede llamar desde las sentencias SQL.
La función FDU se puede utilizar en cualquier sentencia que pueda invocar funciones,
como SELECT y UPDATE, además de en triggers.
Ejemplos
Ejemplo 1. Ejemplo de sqlite_create_function()
<?php function md5_invertida($cadena) { return strrev(md5($cadena)); }
if ($manejador_bd = sqlite_open('mysqlitedb', 0666, $error_sqlite)) { sqlite_create_function($manejador_bd, 'md5inv', 'md5_invertida', 1); $consulta = 'SELECT md5inv(nombre_archivo) FROM archivos'; $filas = sqlite_array_query($manejador_bd, $consulta); } else { echo 'Error al abriri a base de datos de SQLite: ' . $error_sqlite; exit; } ?>
|
|
La función del ejemplo calcula el valor del resumen md5 de una cadena y
lo invierte antes de devolverlo. Cuando se ejecuta la sentencia SQL, devuelve el
valor del nombre de archivo devuelto por esta función. Los datos devueltos
en la variable $filas contienen los resultados procesados.
La gran ventaja de esta técnica es que no se tienen que procesar los resultados
mediante un bucle de tipo foreach() una vez obtenidos los resultados.
PHP registra una función especial llamada php cuando la base de datos
se abre por primera vez. La función php se puede emplear para llamar a cualquier función
PHP sin necesidad de tener que registrarla previamente.
Ejemplo 2. Ejemplo de uso de una función PHP
<?php $filas = sqlite_array_query($manejador_bd, "SELECT php('md5', nombre_archivo) from archivos"); ?>
|
El ejemplo llama a la función md5() de PHP para cada
columna llamada nombre_archivo de la base de datos y devuelve
el resultado en la variable $filas
|
Nota:
PHP no realiza el proceso de codificación/decodificación de datos binarios
de forma automática, ya que esto podrÃa penalizar seriamente el rendimiento de las aplicaciones.
Por tanto, se debe codificar/decodificar manualmente los parámetros y valores devueltos por estas
funciones. Para más detalles, se puede consultar la documentación relativa a las funciones
sqlite_udf_encode_binary() y sqlite_udf_decode_binary().
Sugerencia:
No se recomienda que las propias funciones FDU se encarguen del procesamiento
de los datos binarios, a no ser que el rendimiento de la aplicación no
sea un elemento determinante.
Sugerencia:
Se pueden emplear las funciones sqlite_create_function() y
sqlite_create_aggregate() para sobrecargar las funciones
SQL nativas de SQLite.