(PHP 5, PECL sqlite:1.0-1.0.3)
sqlite_udf_decode_binary — Decodifica los datos binarios que se pasan como parámetro a las funciones FDU (función definida por el usuario)
sqlite_udf_decode_binary() decodifica la codificación binaria aplicada por las funciones sqlite_udf_encode_binary() o sqlite_escape_string().
Se debe utilizar esta función para los parámetros que se pasan a las funciones FDU (función definida por el usuario) si éstos pueden contener datos binarios.
PHP no realiza este proceso de codificación/decodificación de forma automática, ya que esto podría penalizar seriamente el rendimiento de las aplicaciones.
Example#1 Ejemplo de función max_length segura con datos binarios
<?php
$datos = array(
'uno',
'dos',
'tres',
'cuatro',
'cinco',
'seis',
'siete',
'ocho',
'nueve',
'diez',
);
$manejador_bd = sqlite_open(':memory:');
sqlite_query($manejador_bd, "CREATE TABLE tabla_cadenas(a)");
foreach ($datos as $cadena) {
$cadena = sqlite_escape_string($cadena);
sqlite_query($manejador_bd, "INSERT INTO tabla_cadenas VALUES ('$cadena')");
}
function max_longitud_temporal(&$contexto, $cadena)
{
$cadena = sqlite_udf_decode_binary($cadena);
if (strlen($cadena) > $contexto) {
$contexto = strlen($cadena);
}
}
function max_longitud_final(&$contexto)
{
return $contexto;
}
sqlite_create_aggregate($manejador_bd, 'max_longitud', 'max_longitud_temporal', 'max_longitud_final');
var_dump(sqlite_array_query($manejador_bd, 'SELECT max_longitud(a) from tabla_cadenas'));
?>