mysqli::set_local_infile_handler

mysqli_set_local_infile_handler

Set callback function for LOAD DATA LOCAL INFILE command

&reftitle.description;

&style.oop;

`bool` `mysqli::set_local_infile_handler` `mysqli` `link` `callable` `read_func`

&style.procedural;

`bool` `mysqli_set_local_infile_handler` `mysqli` `link` `callable` `read_func`

Set callback function for LOAD DATA LOCAL INFILE command

The callbacks task is to read input from the file specified in the `LOAD DATA LOCAL INFILE` and to reformat it into the format understood by `LOAD DATA INFILE`.

The returned data needs to match the format specified in the `LOAD DATA`

&reftitle.parameters;

&mysqli.link.description;

`read_func`

- A callback function or object method taking the following parameters:

  `stream`

- A PHP stream associated with the SQL commands INFILE

`&buffer`

- A string buffer to store the rewritten input into

`buflen`

- The maximum number of characters to be stored in the buffer

`&errormsg`

- If an error occurs you can store an error message in here

The callback function should return the number of characters stored in the `buffer` or a negative value if an error occurred.

&reftitle.returnvalues;

&return.success;

&reftitle.examples;

### `mysqli::set_local_infile_handler` example

&style.oop;

    <?php
      $db = mysqli_init();
      $db->real_connect("localhost","root","","test");

      function callme($stream, &$buffer, $buflen, &$errmsg)
      {
        $buffer = fgets($stream);

        echo $buffer;

        // convert to upper case and replace "," delimiter with [TAB]
        $buffer = strtoupper(str_replace(",", "\t", $buffer));

        return strlen($buffer);
      }

      echo "Input:\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 "\nResult:\n";
      while ($row = $res->fetch_assoc()) {
        echo join(",", $row)."\n";
      }
    ?>

&style.procedural;

    <?php
      $db = mysqli_init();
      mysqli_real_connect($db, "localhost","root","","test");

      function callme($stream, &$buffer, $buflen, &$errmsg)
      {
        $buffer = fgets($stream);

        echo $buffer;

        // convert to upper case and replace "," delimiter with [TAB]
        $buffer = strtoupper(str_replace(",", "\t", $buffer));

        return strlen($buffer);
      }

      echo "Input:\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 "\nResult:\n";
      while ($row = mysqli_fetch_assoc($res)) {
        echo join(",", $row)."\n";
      }
    ?>

&examples.outputs;

    Input:
    23,foo
    42,bar

    Output:
    23,FOO
    42,BAR

&reftitle.seealso;

- `mysqli_set_local_infile_default`