mysqli::set_local_infile_handler
mysqli_set_local_infile_handler
(PHP 5)
mysqli::set_local_infile_handler -- mysqli_set_local_infile_handler — Establecer la llamada de retorno para el comando LOAD DATA LOCAL INFILE
Descripción
Estilo orientado a objetos
Estilo por procedimientos
Establece la llamada de retorno para el comando LOAD DATA LOCAL INFILE
La tarea de la llamada de retorno es leer la entrada desde un fichero especificado en LOAD DATA LOCAL INFILE y reformatearla al formato entendido por LOAD DATA INFILE.
Los datos devueltos necesitan coincidir con el formato especificado en LOAD DATA
Parámetros
-
link -
Sólo estilo por procediminetos: Un identificador de enlace devuelto por mysqli_connect() o mysqli_init()
-
read_func -
Una llamada de retorno o un método de un objeto que toma los siguientes parámetros:
-
stream -
Un flujo de PHP asociado con los comandos INFILE de SQL
-
&buffer -
Un buffer de cadena donde almacenar la entrada reescrita
-
buflen -
El número máximo de caracteres a almacenar en el buffer
-
&errormsg -
Si ocurre un error se puede almacenar un mensaje de error aquí
-
La llamada de retorno debería devolver el número de caracters almacenados
en el buffer o un valor negativo si ocurriera
un error.
Valores devueltos
Devuelve TRUE en caso de éxito o FALSE en caso de error.
Ejemplos
Ejemplo #1 Ejemplo de mysqli::set_local_infile_handler()
Estilo orientado a objetos
<?php
$db = mysqli_init();
$db->real_connect("localhost","root","","test");
function callme($stream, &$buffer, $buflen, &$errmsg)
{
$buffer = fgets($stream);
echo $buffer;
// convertir a mayúsculas y reemplazar el delimitador "," con [TAB]
$buffer = strtoupper(str_replace(",", "\t", $buffer));
return strlen($buffer);
}
echo "Entrada:\n";
$db->set_local_infile_handler("callme");
$db->query("LOAD DATA LOCAL INFILE 'input.txt' INTO TABLE t1");
$db->set_local_infile_default();
$res = $db->query("SELECT * FROM t1");
echo "\nResultado:\n";
while ($fila = $res->fetch_assoc()) {
echo join(",", $fila)."\n";
}
?>
Estilo por procedimientos
<?php
$db = mysqli_init();
mysqli_real_connect($db, "localhost","root","","test");
function callme($stream, &$buffer, $buflen, &$errmsg)
{
$buffer = fgets($stream);
echo $buffer;
// convertir a mayúsculas y reemplazar el delimitador "," con [TAB]
$buffer = strtoupper(str_replace(",", "\t", $buffer));
return strlen($buffer);
}
echo "Entrada:\n";
mysqli_set_local_infile_handler($db, "callme");
mysqli_query($db, "LOAD DATA LOCAL INFILE 'input.txt' INTO TABLE t1");
mysqli_set_local_infile_default($db);
$res = mysqli_query($db, "SELECT * FROM t1");
echo "\nResultado:\n";
while ($fila = mysqli_fetch_assoc($res)) {
echo join(",", $fila)."\n";
}
?>
El resultado de los ejemplos serían:
Entrada: 23,foo 42,bar Resultado: 23,FOO 42,BAR
Ver también
- mysqli_set_local_infile_default() - Desestablece el gestor definido por el usuario para un comando load local infile