လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Set_local_infile_Handler ၏လျှောက်လွှာတင်ခြင်းသည်ဖိုင်တင်ခြင်းလုပ်ငန်းစဉ်တွင်လုပ်ဆောင်ခြင်း၏ဥပမာများမှာအဘယ်နည်း။ ဘယ်လိုလည်ပတ်ရမလဲ။

Set_local_infile_Handler ၏လျှောက်လွှာတင်ခြင်းသည်ဖိုင်တင်ခြင်းလုပ်ငန်းစဉ်တွင်လုပ်ဆောင်ခြင်း၏ဥပမာများမှာအဘယ်နည်း။ ဘယ်လိုလည်ပတ်ရမလဲ။

gitbox 2025-09-12

အိုကေ, မင်းရဲ့လိုအပ်ချက်တွေကိုငါနားလည်တယ်။ PHP မှဆောင်းပါးအကြောင်းအရာများကိုသင်၏လိုအပ်ချက်များနှင့်အညီရေးပါမည်။ ရှေ့နှင့်အဓိကစာသားများကိုအလျားလိုက်မျဉ်းကြောင်းများဖြင့်ခွဲခြားမည်ဖြစ်ပြီးအဓိကစာသားသည် set_local_infile_handler ၏လျှောက်လွှာနှင့်စစ်ဆင်ရေးနည်းလမ်းများကိုရှင်းပြသည်။ ဤတွင်ဆောင်းပါးအပြည့်အစုံဖြစ်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Pre- လွတ်လပ်သောကုဒ်ဥပမာ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ပရိုဂရမ်ပတ် 0 န်းကျင်ကိုစတင်ပါ...\n"</span></span><span>;
</span><span><span class="hljs-variable">$version</span></span><span> = </span><span><span class="hljs-title function_ invoke__">phpversion</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ယခုPHPထင်မြင်ချက်: <span class="hljs-subst">$version</span></span></span><span>\n";
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/*
ဆောင်းပါးခေါင်းစဉ်:set_local_infile_handlerဖိုင်တင်ခြင်းလုပ်ငန်းစဉ်တွင်လုပ်ဆောင်ချက်များ၏လုပ်ဆောင်မှုဥပမာများကဘာတွေလဲ?ဘယ်လိုလည်ပတ်မလဲ?
*/</span>

<span class="hljs-comment">/**
 * 1. ဘာလဲ set_local_infile_handler
 * 
 * တည်နေ PHP အလယ်ပိုင်း,set_local_infile_handler ဟုတ်ကဲ့ MySQLi extension ကိုအားဖြင့်ထောက်ပံ့ function ကို,စိတ်ကြိုက်ပြုပြင်ခြင်းသည် MySQL LOAD DATA LOCAL INFILE တင်ထားသောဖိုင်ဒေတာ。
 * 它可以让开发者တည်နေ MySQL ကရိယာတန်းဆာ LOAD DATA LOCAL INFILE စစ်ဆင်ရေးအတွင်း,Callback လုပ်ဆောင်ချက်များကိုမှတဆင့်ဖိုင် contptions များကိုကြားဖြတ်ခြင်းနှင့်၎င်းတို့ကိုလုပ်ဆောင်ပါ,ဒေသတွင်းအမှန်တကယ်ဖိုင်များအပေါ်မှီခိုခြင်းမရှိဘဲ。
 *
 * သဒ္ဒါ:
 * mysqli::set_local_infile_handler(mysqli $link, callable $handler): bool
 * 
 * တေးရေး:
 * - $link: MySQLi အရာဝတ်ထုများကိုချိတ်ဆက်ပါ
 * - $handler: callback function ကို,ဖိုင် contents တွေကို process လုပ်ဖို့အသုံးပြုခဲ့သည်
 *
 * Value ကိုပြန်သွားပါ:
 * - အောင်မြင်စွာပြန်လာပါ true,ပြန်လာရန်မအောင်မြင်ပါ false
 */</span>

<span class="hljs-comment">/**
 * 2. ဖိုင်များကိုတင်ပါ set_local_infile_handler နမူနာ
 */</span>

</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"test_db"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_errno) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// ဖိုင်တင်ပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">set_local_infile_handler</span></span><span>(function(</span><span><span class="hljs-variable">$filename</span></span><span>, </span><span><span class="hljs-variable">$fileHandler</span></span><span>) {
    </span><span><span class="hljs-comment">// ယူဆချက် $fileHandler ဟုတ်ကဲ့一个စာချုပ်စာတမ်း流对象</span></span><span>
    </span><span><span class="hljs-comment">// ဤတွင်သင်တင်ထားသောအကြောင်းအရာများကိုစစ်ထုတ်နိုင်သည်、ပြောင်းလဲခြင်းသို့မဟုတ်အခြားစစ်ဆင်ရေး</span></span><span>
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">fgets</span></span><span>(</span><span><span class="hljs-variable">$fileHandler</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-comment">// နမူနာ:Semicolon နှင့်ကော်မာကိုအစားထိုးပါ</span></span><span>
        </span><span><span class="hljs-variable">$line</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</span></span><span>(</span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-string">";"</span></span><span>, </span><span><span class="hljs-variable">$line</span></span><span>);
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဒေတာအတန်း processing: <span class="hljs-subst">$line</span></span></span><span>\n";
    }
});

</span><span><span class="hljs-comment">// ယူဆချက်客户端上传了 CSV စာချုပ်စာတမ်း,服务器端ကရိယာတန်းဆာ LOAD DATA LOCAL INFILE</span></span><span>
</span><span><span class="hljs-variable">$sql</span></span><span> = <span class="hljs-string">&lt;&lt;&lt;SQL
LOAD DATA LOCAL INFILE '上传စာချုပ်စာတမ်း.csv' 
INTO TABLE users 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
(username, email, age);
SQL</span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဒေတာကိုအောင်မြင်စွာတင်သွင်း!\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"သွင်းကုန်မအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error . </span><span><span class="hljs-string">"\n"</span></span><span>;
}

<span class="hljs-comment">/**
 * 3. လျှောက်လွှာဇာတ်လမ်းတစ်ပုဒ်
 *
 * - စာချုပ်စာတမ်း数据预处理:တည်နေ写入数据库之前对数据进行清理、အစားထိုးသို့မဟုတ် format နဲ့。
 * - ဒေတာလုံခြုံရေးထိန်းချုပ်မှု:可以对上传စာချုပ်စာတမ်း进行验证,အန္တရာယ်ရှိတဲ့ထိုးဆေးတားဆီး。
 * - 避免临时စာချုပ်စာတမ်း存储:无需将စာချုပ်စာတမ်း物理存储တည်နေ服务器,သာ calmback စီးဆင်းမှုကို process。
 */</span>

<span class="hljs-comment">/**
 * 4. စစ်ဆင်ရေးခြေလှမ်းများ၏အကျဉ်းချုပ်
 *
 * 1. အသုံးပြု MySQLi ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ。
 * 2. တယ်လီဖုန်းဆက်ခြင်း set_local_infile_handler 设置callback function ကို。
 * 3. တည်နေcallback function ကိုအလယ်ပိုင်း读取和处理စာချုပ်စာတမ်း内容。
 * 4. အသုံးပြု LOAD DATA LOCAL INFILE ဒေတာအနေဖြင့်ဒေတာဘေ့စသို့တင်သွင်းပါ。
 * 5. အပြောင်းအလဲနဲ့ရလဒ်များအရသက်ဆိုင်ရာအဆင့်အတန်းကိုပြန်သွားပါ。
 */</span>

</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>