- PHP 手册
- 函数参考
- 数据库扩展
- 针对各数据库系统对应的扩展
- MySQL
- Mysqli
- MySQLi
mysqli::set_local_infile_handler
mysqli_set_local_infile_handler
(PHP 5, PHP 7)
mysqli::set_local_infile_handler -- mysqli_set_local_infile_handler — 设置 LOAD DATA LOCAL INFILE 命令的回调函数
说明
面向对象风格
mysqli::set_local_infile_handler ( mysqli$link
, callable $read_func
) : bool
过程化风格
mysqli_set_local_infile_handler ( mysqli$link
, callable $read_func
) : bool
设置 LOAD DATA LOCAL INFILE 命令的回调函数
回调函数的作用是读取 LOAD DATA LOCAL INFILE 命令指定的文件, 并且将其重新格式化。 所用的格式必须是 LOAD DATA INFILE 命令可以识别的格式。
返回的数据需要和 LOAD DATA 命令指定的格式匹配。
参数
-
link
-
仅以过程化样式:由mysqli_connect() 或 mysqli_init() 返回的链接标识。
-
read_func
-
一个回调函数,或者对象的方法,它需要接收以下参数:
-
stream
-
和 SQL 命令中的 INFILE 关联的 PHP 流
-
&buffer
-
用来保存输入数据重写之后数据的字符串缓冲区
-
buflen
-
缓冲区中存储的最大的字符数量
-
&errormsg
-
如果发生错误,可以用这个变量存储一些错误信息
-
如果处理成功,则回调函数需要返回 buffer
中存储的字符数量,
如果处理失败,
返回一个负数。
返回值
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
范例
Example #1 mysqli::set_local_infile_handler() 例程
面向对象风格
<?php
$db = mysqli_init();
$db->real_connect("localhost","root","","test");
function callme($stream, &$buffer, $buflen, &$errmsg)
{
$buffer = fgets($stream);
echo $buffer;
// 将字符串替换成大写,并且将 "," 分隔符替换成 [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";
}
?>
过程化风格
<?php
$db = mysqli_init();
mysqli_real_connect($db, "localhost","root","","test");
function callme($stream, &$buffer, $buflen, &$errmsg)
{
$buffer = fgets($stream);
echo $buffer;
// 将字符串替换成大写,并且将 "," 分隔符替换成 [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";
}
?>
以上例程会输出:
Input: 23,foo 42,bar Output: 23,FOO 42,BAR
参见
- mysqli_set_local_infile_default() - 取消用户指定的回调函数
User Contributed Notes
There are no user contributed notes for this page.官方地址:https://www.php.net/manual/en/mysqli.set-local-infile-handler.php