set_local_infile_handler
تابع set_local_infile_handler یک «کالبک (Callback)» برای دستور LOAD DATA LOCAL INFILE ست می کند. کالبک یعنی تابعی که بعداً صدا زده می شود. این تابع فایل را می خواند و داده را به فرمتی که LOAD DATA می فهمد برمی گرداند.
تعریف کوتاه و کاربرد هندلر فایل محلی mysqli
طبق منبع، این تابع کالبکی تعیین می کند که ورودی فایل را بخواند، دوباره قالب بندی کند، و همان قالب تعریف شده در LOAD DATA را برگرداند. خروجی باید دقیقاً با فرمت مشخص شده در دستور هم خوان باشد.
نحو و پارامترها
شیءگرا: $mysqli->set_local_infile_handler(read_file). رویه ای: mysqli_set_local_infile_handler(read_file). پارامترها: connection برای اتصال استفاده می شود و read_func همان کالبک است.
نمونه کد (شیءگرا)
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: " . $mysqli->connect_error;
exit();
}
function read_local_file($stream, &$buffer, $buflen, &$errmsg) {
$buffer = "";
while (!feof($stream)) {
$chunk = fread($stream, $buflen);
if ($chunk === false) {
$errmsg = "Failed to read stream";
return 0;
}
$buffer .= $chunk;
}
return strlen($buffer);
}
$mysqli->set_local_infile_handler('read_local_file');
$mysqli->close();
?>
گام های عملی
- اتصال بساز و خطا را بررسی کن.
- کالبک خواندن فایل را پیاده سازی کن.
- هندلر فایل محلی را روی اتصال ست کن.
- دستور
LOAD DATA LOCAL INFILEرا اجرا کن.
هشدار: داده خروجی کالبک باید دقیقاً با فرمت تعیین شده در LOAD DATA یکی باشد؛ وگرنه بارگذاری شکست می خورد.
برای کار کامل با کوئری ها، صفحه اجرای کوئری را ببین. همچنین برای تنظیمات اتصال، mysqli_options مفید است. اگر لازم شد، از همین بخش برای لینک هندلر فایل محلی mysqli استفاده کن.
جمع بندی سریع
- این تابع کالبک خواندن فایل را ست می کند.
- کالبک باید فایل را بخواند و اصلاح کند.
- فرمت خروجی باید با
LOAD DATAهماهنگ باشد. - اتصال معتبر و بدون خطا ضروری است.