လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI :: SET_CHARSet နှင့် Database Default ဇာတ်ကောင်အကြားဆက်နွယ်မှု

MySQLI :: SET_CHARSet နှင့် Database Default ဇာတ်ကောင်အကြားဆက်နွယ်မှု

gitbox 2025-05-26

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 ဆိုတာဘာလဲ။

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 တွင်ထည့်သွင်းထားသည်။


နှစ်ခုအကြားဆက်ဆံရေးနှင့်ခြားနားချက်

  1. လှုပ်ရှားမှု၏ကွဲပြားခြားနားသောအတိုင်းအတာ

  • ဒေတာဘေ့စ်၏ပုံမှန်ဇာတ်ကောင်သတ်မှတ်ချက်သည် ဒေတာဘေ့စ်အဆင့်ကိုသက်ရောက်သည်။

  • MySQLI :: SET_CHARSet သည် 0 န်ဆောင်မှုခံယူသူနှင့်ဒေတာဘေ့စ်အကြားဆက်သွယ်ရေးပုံစံကိုသက်ရောက်သည်။

  1. ဒေတာအဆင့်ကွဲပြားခြားနားသောအကျိုးသက်ရောက်သည်

  • ဒေတာဘေ့စ်တွင် dataBase ၏ပုံသေဇာတ်ကောင်သတ်မှတ်ချက် သည်ဒေတာဘေ့စ်ရှိသိုလှောင်မှုပုံစံကိုဆုံးဖြတ်သည်။

  • MySQLI :: Set_charset သည် ပါတီနှစ်ခုစလုံးကိုတသမတ်တည်းဖြစ်ကြောင်းသေချာစေရန် client နှင့် server အကြားဒေတာဖလှယ်မှုအတွက် encoding format ကိုဆုံးဖြတ်သည်။

  1. ဦး စားပေးနှင့်ပွဲစဉ်

ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါ MySQLI :: set_charet သည်အတိအလင်းမသတ်မှတ်ပါက 0 န်ဆောင်မှုခံယူသူနှင့်ဆာဗာအကြားဆက်သွယ်မှုသည်ဆာဗာ၏ပုံမှန်ဇာတ်ကောင်ကိုအသုံးပြုသည်။ ၎င်းသည်သင်၏ဒေတာဘေ့စ် default character set သည် UTF8MB4 ဖြစ်ပြီး client client communication encoding သည် လက်ရာများ နှင့် carbled data ကိုဖြစ်ပေါ်စေလိမ့်မည်။

ထို့ကြောင့်ဒေတာဘေ့စ်စားပွဲသည် UTF8MB4 ဖြစ်လျှင်ပင် setform_charet ကို မသုံးပါကဆာဗာသည်အချက်အလက်များကိုထုတ်လွှင့်ရန် encoding တစ်ခုတည်းကိုအသုံးပြုရန် setform_charet ကိုမသုံးပါက,


MySQLI :: set_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();

၎င်းသည်ဒေတာဗေ့စ်မှတရုတ်သို့မဟုတ်အထူးအက္ခရာများကိုရိုးရှင်းသောပုံပေါ်မပေါ်လာပါ။