(PHP 5, PHP 7)
mysqli::set_local_infile_handler -- mysqli_set_local_infile_handler — Establecer la llamada de retorno para el comando LOAD DATA LOCAL INFILE
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
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.
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
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ía:
Entrada: 23,foo 42,bar Resultado: 23,FOO 42,BAR