sqlite_create_function

sqlite_create_function

(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.

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.

Nota: 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.

Nota: 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

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.

Ver tambi茅n

sqlite_create_aggregate()