mysqli::set_local_infile_handler

mysqli_set_local_infile_handler

(PHP 5, PHP 7)

mysqli::set_local_infile_handler -- mysqli_set_local_infile_handlerEstablecer la llamada de retorno para el comando LOAD DATA LOCAL INFILE

Descripción

Estilo orientado a objetos

mysqli::set_local_infile_handler ( mysqli $link , callable $read_func ) : bool

Estilo por procedimientos

mysqli_set_local_infile_handler ( mysqli $link , callable $read_func ) : bool

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ía:

Entrada:
23,foo
42,bar

Resultado:
23,FOO
42,BAR

Ver también