PHP Dokumentation: Mysqli set-local-infile-handler
12. Januar 2010 von werner
mysqli::set_local_infile_handler
mysqli_set_local_infile_handler
(PHP 5)
mysqli::set_local_infile_handler — mysqli_set_local_infile_handler — Set callback function for LOAD DATA LOCAL INFILE command
Beschreibung
Object oriented style (method)
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
Parameter-Liste
- link
Nur bei prozeduralem Aufruf: Ein vonmysqli_connect() oder mysqli_init()zurückgegebenes Verbindungsobjekt.
- 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.
Rückgabewerte
Gibt bei Erfolg TRUE zurück. Im Fehlerfall wird FALSE zurückgegeben.
Beispiele
Beispiel #1 Object oriented style
<?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";
}
?>Beispiel #2 Procedural style
<?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";
}
?>Das oben gezeigte Beispiel erzeugt folgendeAusgabe:
Input:23,foo42,barOutput:23,FOO42,BAR
Siehe auch
- mysqli_set_local_infile_default() – Unsets user defined handler for load local infile command