MySQL ဒေတာဘေ့စ်ကို PHP တွင်အသုံးပြုသောအခါ MySQLI_RESURT function မှပြန်လာသော query querted ရလဒ်များတွင်သင်အမှိုက်ပုံပြ problem နာကိုသင်မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ များသောအားဖြင့်, ဤဆောင်းပါးသည်အဘယ်ကြောင့် unset ဇာတ်ကောင် encoding ကိုအဘယ်ကြောင့် barbled query querted ရလဒ်များကိုဖြစ်ပေါ်စေပြီးဖြေရှင်းနည်းများကိုပေးမည်ကိုရှင်းပြပါလိမ့်မည်။
အက်ခရာ encoding သည်စာလုံးများကိုကွန်ပျူတာထဲတွင်သိမ်းဆည်းထားသည့်နှင့်ကိုယ်စားပြုသည့်နည်းလမ်းဖြစ်သည်။ ဘာသာစကားတစ်ခုစီ၏ဇာတ်ကောင်အစုံများကိုမှန်ကန်စွာပြသရန်ရှင်းရှင်းလင်းလင်း encoded လုပ်ရန်လိုအပ်သည်။ ဥပမာအားဖြင့် UTF-8 encoding သည်ကျယ်ပြန့်စွာအသုံးပြုသောအက္ခရာများကိုဘာသာစကားအမျိုးမျိုးဖြင့်ထောက်ပံ့နိုင်သည့်ကျယ်ပြန့်စွာအသုံးပြုသောဇာတ်ကောင်သတ်မှတ်ချက်တစ်ခုဖြစ်သည်။ အကယ်. အက်ခရာ encoding သည်ကိုက်ညီမှုမရှိပါကစနစ်သည်စာသားကိုမှန်ကန်စွာဖော်ထုတ်ပြီးပြသရန်နှင့်အမှီအခိုကင်းစွာပြသနိုင်လိမ့်မည်မဟုတ်ပါ။
MySQL ဒေတာဘေ့စ်တွင်ဒေတာဘေ့စ်တစ်ခုစီ, စားပွဲတင်, နေရာနှင့်ဆက်သွယ်မှုတစ်ခုစီတွင်ကိုယ်ပိုင်အက်ခရာ encoding ရှိနိုင်သည်။ ဒေတာဘေ့စ်၏ဆက်သွယ်မှု၏ character encoding သည်ဒေတာဘေ့စ်သို့မဟုတ်စားပွဲ၏ဇာတ်ကောင် encoding နှင့်ကိုက်ညီမှုမရှိပါကအမှိုက်များပြ problems နာများဖြစ်ပွားနိုင်သည်။
MySQLI_RESULT function ကိုအသုံးပြုသောအခါ, အထူးသဖြင့်, ဒေတာဘေ့စ်နှင့်စားပွဲတင်၏အကျင့်ကိုမသတ်မှတ်ပါက concled code တစ်ခုသို့မဟုတ်ဒေတာဘေ့စ်ဆက်သွယ်မှု၏အကျင့်ကိုမှန်ကန်စွာမသတ်မှတ်ပါ။
MySQLI_RESELT သည် PHP ရှိ function တစ်ခုဖြစ်ပြီး MySQL query ၏ရလဒ်များကိုရရှိရန်ဖြစ်သည်။ SQL query ကို execute လုပ်ရန် MySQLI_QUESERY ကို အသုံးပြုသောအခါ MySQLI_RESult Object ကိုပြန်ပို့သည်။ ထို့နောက်ကျွန်ုပ်တို့သည် Fetch_assoc () , fetch_row () နှင့် query ရလဒ်များကိုရရန်အရာဝတ်ထုရှိအခြားနည်းလမ်းများကိုသုံးနိုင်သည်။
ဥပမာအားဖြင့်:
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
$result = mysqli_query($conn, "SELECT * FROM users");
while($row = mysqli_fetch_assoc($result)) {
echo $row['name'];
}
အထက်ဖော်ပြပါကုဒ်သည်စုံစမ်းမှုရလဒ်၏လယ်ကွင်း အမည်မှာ တရုတ်စာလုံးများပါ 0 င်သည်ဟုယူဆရသော်, encoding ကိုမှန်ကန်စွာမသတ်မှတ်ပါက,
ပုံမှန်အားဖြင့် MySQL ဆက်သွယ်မှု၏ဇာတ်ကောင်အစုံကို MySQL server ၏ configurations မှဆုံးဖြတ်သည်။ MySQL ဆာဗာ၏ဇာတ်ကောင်အစုသည်ကျွန်ုပ်တို့လုပ်ဆောင်လိုသည့်အချက်အလက်များကိုကိုက်ညီမှုမရှိပါက,
ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည်တရုတ်စာလုံးများကို MySQL ဒေတာဘေ့စ်တွင်သိုလှောင်ထားပြီးစားပွဲ၏ဇာတ်ကောင်အစုသည် UTF-8 ဖြစ်သည်ဆိုပါစို့။ သို့သော် PHP script သည်လက်တင် (i.E. ISO-8859-1) ကိုအသုံးပြုပါက Database သို့ဆက်သွယ်သောအခါ database မှပြန်လာသောအချက်အလက်များကို UTF-8 မဟုတ်ပါ။ သင်္ချိုင်းနှစ်ခုကွဲပြားခြားနားသောကြောင့်ပြန်လာသောတရုတ်ဇာတ်ကောင်များသည်အမှိုက်များပေါ်လာလိမ့်မည်။
အက်ခရာ encoding ပြ problem နာကိုဖြေရှင်းရန်ဒေတာဘေ့စ် connection ချိတ်ဆက်သောအခါမှန်ကန်သောဇာတ်ကောင် encoding ကိုသတ်မှတ်ရန်သေချာစေရန်လိုအပ်သည်။ အက်ခရာ encoding ကိုအောက်ပါနည်းလမ်းများဖြင့်သတ်မှတ်နိုင်သည်။
ဒေတာဘေ့စ် connection တစ်ခုတည်ဆောက်ပြီးနောက် MySQLI_SESSESSet_Charet_charset () function ကိုသုံးပါ။
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
mysqli_set_charset($conn, 'utf8'); // ဇာတ်ကောင် encoding ကိုသတ်မှတ်ပါUTF-8
၎င်းသည် UTF-8 အက္ခရာများကို အသုံးပြု. ဒေတာဘေ့စ်ဆက်သွယ်မှုကို encoded ကြောင်းသေချာသည်။
ဒေတာဘေ့စ်နှင့်စားပွဲများ၏ဇာတ်ကောင် encoding ကိုလည်း UTF-8 သို့သတ်မှတ်ရန်သေချာစေရန်လိုအပ်သည်။ ဒေတာဘေ့စ်နှင့်စားပွဲများ၏ဇာတ်ကောင်အစုံများကိုအောက်ပါ SQL ထုတ်ပြန်ချက်များဖြင့်စစ်ဆေး။ ပြုပြင်နိုင်သည်။
ဒေတာဘေ့စ်ဇာတ်ကောင် set ကိုကြည့်ပါ။
SHOW CREATE DATABASE database_name;
ဒေတာဘေ့စ်ဇာတ်ကောင် set ကိုပြင်ဆင်ပါ:
ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
စားပွဲ၌ဇာတ်ကောင်အစုံကိုကြည့်ပါ။
SHOW TABLE STATUS FROM database_name;
စားပွဲ၌ဇာတ်ကောင်အစုကိုပြုပြင်မွမ်းမံပါ။
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
အချို့ဖြစ်ရပ်များတွင်အောက်ပါ SQL ကြေငြာချက်ကိုကွပ်မျက်ခြင်းဖြင့် client clait clire ကိုသတ်မှတ်ရန်လည်းလိုအပ်နိုင်သည်။
SET NAMES 'utf8';
၎င်းသည် 0 န်ဆောင်မှုခံယူသူနှင့် MySQL Server အကြားရှိဇာတ်ကောင် encoding သည်စုံစမ်းမှုကွပ်မျက်ခံရသောအခါတသမတ်တည်းဖြစ်ကြောင်းသေချာစေသည်။
အထူးသဖြင့်စုံစမ်းမှုရလဒ်များရရန် MySQLI_RESURRESURRURSult function ကိုအသုံးပြုသောအခါ carbled carbled ည့်သည်ပြ problem နာကိုများသောအားဖြင့်ပြုလုပ်လေ့ရှိသည်။ အကယ်. အက်ခရာ Encoding ကိုမှန်ကန်စွာမသတ်မှတ်ပါက MySQL သည်ပုံမှန်ဇာတ်ကောင် (များသောအားဖြင့်လက်တင် 1) ကိုအသုံးပြုလိမ့်မည်။ ဤပြ problem နာကိုရှောင်ရှားရန်သင်သေချာသင့်သည် -
ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါမှန်ကန်သောဇာတ်ကောင် encoding (e.g. utf-8) ကိုသတ်မှတ်ပါ။
ဒေတာဘေ့စ်, စားပွဲနှင့် 0 န်ဆောင်မှုခံယူသူ၏ဇာတ်ကောင်အစုံသည်တသမတ်တည်းဖြစ်ကြောင်းသေချာပါစေ။
ပြ problems နာများကြုံတွေ့ရဆဲဖြစ်ပါက, utf8 အမည်များကို setting ကို setting ကို set throw name encoding ကိုသေချာစေရန် Setting ကိုသတ်မှတ်နိုင်သည်။
ဤနည်းလမ်းများမှတစ်ဆင့်မေးမြန်းမှုရလဒ်များကိုထိထိရောက်ရောက်ရှောင်ရှားနိုင်ပြီးအချက်အလက်များကိုမှန်ကန်စွာတင်ပြရန် concled code ကိုသေချာစေရန်သေချာစေနိုင်သည်။