PHP တွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုများအထူးသဖြင့်ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသောအချက်အလက်များတွင်ပါ 0 င်သည့်အချက်အလက်များပါ 0 င်သည့်အချက်အလက်များကိုမှန်ကန်စွာသတ်မှတ်ထားသည့်အခါ, MySQLI :: Get_charset function ကိုလက်ရှိဒေတာဘေ့စ် connection မှအသုံးပြုသောဇာတ်ကောင် (charset) ရရှိရန်အသုံးပြုသည်။ သို့သော် developer အချို့ကမူပြန်ဆိုထားသောဇာတ်ကောင်အစုံသည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါအခြားဇာတ်ကောင်အစုံ (UTF-8) ကိုသတ်မှတ်ထားသည့်အခါတွင်ဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါဤလုပ်ဆောင်မှုကိုအသုံးပြုသောအခါ လက်တင်စကားလုံး ဖြစ်သည်။ ဒီတော့ဘာကြောင့်ဒီလိုဖြစ်ရတာလဲ။ ဘာမှားလဲ
ပထမ ဦး စွာ MySQLI :: Get_charset function ၏လုပ်ဆောင်ချက်သည်လက်ရှိဒေတာဘေ့စ်ဆက်သွယ်မှုနှင့်ဆက်စပ်သောအက္ခရာများကိုပြန်ပို့ရန်ဖြစ်သည်။ ဤဇာတ်ကောင်သတ်မှတ်ချက်သည်ဒေတာဘေ့စ်သည် database ကိုယ်နှိုက်၏ပုံမှန်ဇာတ်ကောင်အစုကိုမဆက်သွယ်သည့်အခါအသုံးပြုသောဇာတ်ကောင်သတ်မှတ်ချက်ဖြစ်သည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
$charset = $mysqli->get_charset();
$ charset တွင် လက်ရှိချိတ်ဆက်မှု၏သတ်မှတ်ထားသောသတင်းအချက်အလက်များကိုပါ 0 င်မည်။
MySQLI :: Get_charet မှပြန်လာသောဇာတ်ကောင်သည် လက်တင်ဘာသာစကား ဖြစ်သည်ကိုသင်တွေ့ရှိသည့်အခါ, များသောအားဖြင့်အောက်ပါအကြောင်းပြချက်များရှိသည်။
ဒေတာဘေ့စ် connection တစ်ခုတည်ဆောက်ရန် MySQLI extension ကိုသင်အသုံးပြုသောအခါ, ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါသို့မဟုတ် setting မမှန်ကန်ပါကစာလုံးအစုကိုသတ်မှတ်ထားပါက MySQLI သည် ပုံမှန်အားဖြင့် လက်တင် နံပါတ်အက်ခရာကိုအသုံးပြုလိမ့်မည်။ database ကိုယ်နှိုက်၏ပုံမှန်ဇာတ်ကောင်အစုသည် UTF-8 ဖြစ်သည်ဆိုပါက connection သည် phip php တွင်အတိအလင်းမသတ်မှတ်ပါက လက်တင်အမေရိကကို အသုံးပြုနေဆဲဖြစ်သည်။
အဆိုပါဇာတ်ကောင်အစုံ set_charet နည်းလမ်းမှတဆင့်အတိအလင်း set ကိုအတိအလင်း set နိုင်ပါတယ်:
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
// ဇာတ်ကောင်ကိုသတ်မှတ်ပါ UTF-8
$mysqli->set_charset('utf8');
// လက်ရှိဇာတ်ကောင်အစုံရယူပါ
$charset = $mysqli->get_charset();
echo $charset->charset;
အထက်ဖော်ပြပါကုဒ် နံပါတ် သည် UTF-8 encoding ကိုအသုံးပြုရန် Database ဆက်သွယ်မှုကို UTF-8 encoding ကိုအသုံးပြုရန် Database Connection ကိုပြောပြသည်။
PHP Code တွင်စာလုံးအစုကိုသတ်မှတ်ထားလျှင်ပင် database ကိုယ်နှိုက်ကို default character set ကို လက်တင် တွင်သတ်မှတ်ထားပါကဒေတာဘေ့စ်ဆက်သွယ်မှုကိုတည်ထောင်သည့်အခါပြန်လည်ရောက်ရှိသည့်ဇာတ်ကောင်ကိုအကျိုးသက်ရောက်နိုင်သည်။ ဒေတာဘေ့စ်၏ပုံမှန်ဇာတ်ကောင်သတ်မှတ်ချက်ကိုသေချာစေရန်သင်၏ဒေတာဘေ့စ် configuration ကိုစစ်ဆေးပါ (ဥပမာ UTF-8) ။ အောက်ပါ SQL query မှတစ်ဆင့်ဒေတာဘေ့စ်ကို dataBase ၏အစု၏သတ်မှတ်ချက်ကိုကြည့်နိုင်သည်။
SHOW VARIABLES LIKE 'character_set_database';
ဒေတာဘေ့စ်၏ကိုယ်နှံ၏ဇာတ်ကောင်များအပြင် data table များနှင့်ကော်လံများ၏ဇာတ်ကောင်များနှင့်ကော်လံများ၏ဇာတ်ကောင်အစုံသည်ဇာတ်ကောင်များ၏ပြသမှုကိုသက်ရောက်နိုင်သည်။ စားပွဲဝိုင်းတစ်ခုသို့မဟုတ်ကော်လံတစ်ခု၏ဇာတ်ကောင်အစုသည် concatenated သည့်အခါသတ်မှတ်ထားသည့်ဇာတ်ကောင်နှင့်မကိုက်ညီပါကဇာတ်ကောင် encoding ပြ problems နာများပေါ်ပေါက်နိုင်သည်။ အောက်ပါ SQL Queries များမှစားပွဲနှင့်ကော်လံများ၏ဇာတ်ကောင်များ၏ဇာတ်ကောင်များကိုကြည့်ရှုနိုင်သည်။
SHOW TABLE STATUS WHERE name = 'your_table_name';
တနည်းအားဖြင့်, သတ်သတ်မှတ်မှတ်ကော်လံတစ်ခုအတွက်သတ်မှတ်ထားသောစာလုံးကိုကြည့်ပါ။
SHOW FULL COLUMNS FROM your_table_name;
ဤပြ problem နာကိုဖြေရှင်းခြင်း၏အဓိကအချက်မှာ PHP code တွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုအသုံးပြုကြောင်းသေချာစေရန်ဖြစ်သည်။ တိကျသောနည်းလမ်းများမှာအောက်ပါအတိုင်းဖြစ်သည် -
ရှင်းရှင်းလင်းလင်း set ကို set ကို set: MySQLI :: set_charset ကိုသုံးပါ။
ဒေတာဘေ့စ်များ, ဒေတာဇယားများနှင့်ကော်လံများ၏ဇာတ်ကောင်အစုံများကိုစစ်ဆေးပါ - ဒေတာဘေ့စ်များ, ဒေတာစားပွဲများနှင့်ကော်လံများနှင့်ကော်လံများကို UTF-8 (သို့မဟုတ်သင်လိုအပ်သည့်ဇာတ်ကောင်သတ်မှတ်ချက်) ကိုသေချာအောင်စစ်ဆေးပါ။
Database Configuration ကိုစစ်ဆေးပါ။ ပုံမှန်ဇာတ်ကောင် set ကို Database Server configuration file ( My.CNF ) တွင် UTF-8 ကိုသတ်မှတ်မည်လားဆိုတာအတည်ပြုပါ။
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
// 显式ဇာတ်ကောင်ကိုသတ်မှတ်ပါ UTF-8
if (!$mysqli->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $mysqli->error);
exit();
}
$charset = $mysqli->get_charset();
echo $charset->charset; // အဖြစ်ပြသသင့်ပါတယ် utf8
MySQLI :: Get_charet ကို သုံးသောအခါပြန်လာသောဇာတ်ကောင်အစုသည်လက်ရှိဒေတာဘေ့စ်ဆက်သွယ်မှုမှအသုံးပြုသောဇာတ်ကောင်ဖြစ်သည်။ အကယ်. ဇာတ်ကောင်ကို လက်တင်ဘာသာ အဖြစ်ပြသပါက connection အတွင်းရှိဇာတ်ကောင် set ကိုမှန်ကန်စွာသတ်မှတ်ထားခြင်းသို့မဟုတ်ဒေတာဘေ့စ်, ဒေတာစားပွဲနှင့်ကော်လံ၏ဇာတ်ကောင်များနှင့်ကော်လံများနှင့်ကိုက်ညီမှုရှိသည်။ ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါ database နှင့်စားပွဲများ၏ဇာတ်ကောင် set configurations ကိုစစ်ဆေးသည့်အခါမှန်ကန်သောဇာတ်ကောင်သတ်မှတ်ချက်ကိုသေချာစွာသတ်မှတ်ပါ, ၎င်းသည်ဤပြ problem နာကိုဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်။