SQLite
PHP Manual

sqlite_create_function

SQLiteDatabase->createFunction

(No version information available, 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:

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.

Lista de parámetros

manejador_bd

El recurso que identifica la base de datos SQLite (y que es el que devuelve la función sqlite_open()). Este parámetro no se requiere cuando se emplea el método orientado a objetos.

nombre_funcion

El nombre de la función a utilizar en las sentencias SQL.

callback

Función de callback que se encarga de manejar la función SQL.

Note: Las funciones de callback deben devolver un tipo de datos entendido por SQLite (esto es, tipo escalar).

numero_argumentos

Valor destinado al parseador de SQLite si la función de callback acepta un número predeterminado de argumentos.

Note: Two alternative syntaxes are supported for compatibility with other database extensions (such as MySQL). The preferred form is the first, where the dbhandle parameter is the first parameter to the function.

Ejemplos

Example#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.

Example#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

Note: 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().

Tip

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.

Tip

Se pueden emplear las funciones sqlite_create_function() y sqlite_create_aggregate() para sobrecargar las funciones SQL nativas de SQLite.

Ver también


SQLite
PHP Manual