Database သို့ PHP ၏ MySQLI extension ကို အသုံးပြု. ချိတ်ဆက်သောအခါ MySQLI :: SET_CHARSet Method ကို အသုံးပြု. developer များကိုမကြာခဏတွေ့ရလေ့ရှိသည်။ ဒီတော့ MySQLI :: Set_charet က Set_charet က Set_charet ဆိုတာဘာလဲ dataBase သူ့ဟာသူရဲ့ default character set နဲ့ဆက်နွယ်မှုရှိပါသလား။ သူတို့အကြားပ conflicts ိပက်ခရှိလိမ့်မည်နည်း ဤဆောင်းပါးသည်နှစ်ခုနှင့်အကောင်းဆုံးအလေ့အကျင့်များအကြားဆက်နွယ်မှုကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
Database server သို့မဟုတ်ဒေတာဘေ့စ်ဥပမာတစ်ခု (Schema) မှ configase defigabase set ကိုရည်ညွှန်းသည်။ ဥပမာ MySQL ဒေတာဘေ့စ်တစ်ခုကိုဖန်တီးသောအခါ, ပုံမှန်ဇာတ်ကောင်သတ်မှတ်ချက်တစ်ခုရှိလိမ့်မည်, ဘုံတစ်ခုမှာ UTF8MB4 သို့မဟုတ် Latin1 ဖြစ်သည်။ စားပွဲဝိုင်းတစ်ခုသို့မဟုတ်လယ်ကွင်းတစ်ခုဖန်တီးသည့်အခါသင်စာလုံးအကြီးတစ်ခုကိုမဖော်ပြပါက database ၏ပုံမှန်ဇာတ်ကောင်အစုကိုအမွေဆက်ခံလိမ့်မည်။
SQL ထုတ်ပြန်ချက်များမှတစ်ဆင့်လက်ရှိဒေတာဘေ့စ် default character ကိုကြည့်ရှုနိုင်သည်။
SHOW VARIABLES LIKE 'character_set_database';
ဆာဗာ၏ပုံမှန်ဇာတ်ကောင်အစုံကိုလည်းသင်ကြည့်ရှုနိုင်သည်။
SHOW VARIABLES LIKE 'character_set_server';
MySQLI :: SET_CHARSet ဆိုသည်မှာ PHP MySQLI အတန်း၏နည်းလမ်းဖြစ်သည်။ ၎င်းသည်လက်ရှိချိတ်ဆက်ထားသောဇာတ်ကောင်အစုကိုသတ်မှတ်ရန်အသုံးပြုသော PHP MySQLI အတန်း၏နည်းလမ်းဖြစ်သည်။ ဤချိန်ညှိချက်သည်ဒေတာဘေ့စ်ဆာဗာကို client မှပေးပို့သောအချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာရန်အသုံးပြုသော database encoding ကိုအသုံးပြုသည်။
$mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->set_charset('utf8mb4');
အထက်ပါကုဒ်တွင် Set_Charet ('Utf8MB4') သည် client မှပေးပို့ပြီးလက်ခံသောအချက်အလက်များကို UTF8MB4 တွင်ထည့်သွင်းထားသည်။
လှုပ်ရှားမှု၏ကွဲပြားခြားနားသောအတိုင်းအတာ
ဒေတာဘေ့စ်၏ပုံမှန်ဇာတ်ကောင်သတ်မှတ်ချက်သည် ဒေတာဘေ့စ်အဆင့်ကိုသက်ရောက်သည်။
MySQLI :: SET_CHARSet သည် 0 န်ဆောင်မှုခံယူသူနှင့်ဒေတာဘေ့စ်အကြားဆက်သွယ်ရေးပုံစံကိုသက်ရောက်သည်။
ဒေတာအဆင့်ကွဲပြားခြားနားသောအကျိုးသက်ရောက်သည်
ဒေတာဘေ့စ်တွင် dataBase ၏ပုံသေဇာတ်ကောင်သတ်မှတ်ချက် သည်ဒေတာဘေ့စ်ရှိသိုလှောင်မှုပုံစံကိုဆုံးဖြတ်သည်။
MySQLI :: Set_charset သည် ပါတီနှစ်ခုစလုံးကိုတသမတ်တည်းဖြစ်ကြောင်းသေချာစေရန် client နှင့် server အကြားဒေတာဖလှယ်မှုအတွက် encoding format ကိုဆုံးဖြတ်သည်။
ဦး စားပေးနှင့်ပွဲစဉ်
ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါ MySQLI :: set_charet သည်အတိအလင်းမသတ်မှတ်ပါက 0 န်ဆောင်မှုခံယူသူနှင့်ဆာဗာအကြားဆက်သွယ်မှုသည်ဆာဗာ၏ပုံမှန်ဇာတ်ကောင်ကိုအသုံးပြုသည်။ ၎င်းသည်သင်၏ဒေတာဘေ့စ် default character set သည် UTF8MB4 ဖြစ်ပြီး client client communication encoding သည် လက်ရာများ နှင့် carbled data ကိုဖြစ်ပေါ်စေလိမ့်မည်။
ထို့ကြောင့်ဒေတာဘေ့စ်စားပွဲသည် UTF8MB4 ဖြစ်လျှင်ပင် setform_charet ကို မသုံးပါကဆာဗာသည်အချက်အလက်များကိုထုတ်လွှင့်ရန် encoding တစ်ခုတည်းကိုအသုံးပြုရန် setform_charet ကိုမသုံးပါက,
0 န်ဆောင်မှုခံယူသူနှင့်ဆာဗာအကြားကိုက်ညီမှုမရှိသောဇာတ်ကောင်များကြောင့် concled code များကြောင့် concled code ကိုရှောင်ရှားနိုင်ရန်အတွက်အကောင်းဆုံးအလေ့အကျင့်သည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ပြီးနောက်ချက်ချင်းခေါ်ဆိုရန်ဖြစ်သည်။
$mysqli->set_charset('utf8mb4');
ဒီအာမခံချက်:
ကူးစက်သောဒေတာ encoding ဒေတာဘေ့စ encoding နှင့်ကိုက်ညီသည်
စုံစမ်းမှုရလဒ်မှန်ကန်စွာ encoded ဖြစ်ပါတယ်
မတိုက်ဆိုင်မှုကို encoding မဟုတ်သောခြွင်းချက်ဇာတ်ကောင်ပြ problems နာများကိုရှောင်ပါ
ဒေတာဘေ့စ် default ဇာတ်ကောင်သတ်မှတ်ချက်သည်အချက်အလက်များ၏သိုလှောင်ရေးကုဒ်ကိုဆုံးဖြတ်သည်။
MySQLI :: set_charet သည် client သည် client ကို server နှင့်ဆက်သွယ်ရန် encoding format ကိုဆုံးဖြတ်သည်။
နှစ်ခုသည်အချက်အလက်များကိုလွှဲပြောင်းခြင်းနှင့်မှန်ကန်စွာသိမ်းဆည်းထားရန်သေချာစေရန်တသမတ်တည်းရှိရမည်။
ဒေတာဘေ့စ် default ဇာတ်ကောင် set သည် UTF8MB4 ဖြစ်သော်လည်း Set_Charet ဖြင့် connection encoding ကို php connoding encoding ကိုအတိအလင်းသတ်မှတ်ထားရမည်။
$mysqli = new mysqli('gitbox.net', 'username', 'password', 'database');
if ($mysqli->connect_error) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ:' . $mysqli->connect_error);
}
// client connection character ကိုသတ်မှတ်ထားပါ utf8mb4
$mysqli->set_charset('utf8mb4');
$sql = "SELECT * FROM users";
$result = $mysqli->query($sql);
while ($row = $result->fetch_assoc()) {
echo $row['username'] . "<br>";
}
$mysqli->close();
၎င်းသည်ဒေတာဗေ့စ်မှတရုတ်သို့မဟုတ်အထူးအက္ခရာများကိုရိုးရှင်းသောပုံပေါ်မပေါ်လာပါ။