MySQL ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ကိုအသုံးပြုသောအခါ MySQLI :: $ connect_error သည် garbled code ကိုပြန်ပို့သည့်အခြေအနေကိုကျွန်ုပ်တို့မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဤပြ problem နာသည်ယေဘုယျအားဖြင့်မမှန်ကန်သောဇာတ်ကောင် encoding settings ကြောင့်ဖြစ်သည်။
MySQLI :: $ connect_Error သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုအမှားအချက်အလက်များကိုရရှိရန် MySQLI extension တွင်အသုံးပြုသော attribute တစ်ခုဖြစ်သည်။ ဒေတာဘေ့စ်ဆက်သွယ်မှုနှင့်ပြ a နာတစ်ခုရှိသည့်အခါအမှားအယွင်းများနှင့်၎င်းကိုပြုလုပ်ရန်၎င်းကိုများသောအားဖြင့်၎င်းကိုအသုံးပြုလေ့ရှိသည်။ သို့သော်ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါကျွန်ုပ်တို့သည်ဇာတ်ကောင် encoding ကိုမှန်ကန်စွာမသတ်မှတ်ပါကအမှားအယွင်းများသည်အမှိုက်များပေါ်လာနိုင်သည်။
အကြောင်းပြချက်များစွာရှိနိုင်သည်။
ဒေတာဘေ့စ် connection ချိတ်ဆက်သောအခါအဘယ်သူမျှမဇာတ်ကောင်အစုံသတ်မှတ်ထားသောဖြစ်ပါတယ်။
ဒေတာဘေ့စ်၏ပုံမှန်ဇာတ်ကောင်အစုသည် PHP ၏ပုံမှန်ဇာတ်ကောင်အစုနှင့်မကိုက်ညီပါ။
ဒေတာဘေ့စ်ရှိစားပွဲတင်နှင့်ကွင်းဆင်းဇာတ်ကောင် settings သည်ယူနီဖောင်းမဟုတ်ပါ။
ဆာဗာ operating system သို့မဟုတ် php ပတ်ဝန်းကျင်၏ set set settings သည်ကိုက်ညီမှုမရှိပါ။
အမှိုက်များပြ problems နာများကိုရှောင်ရှားရန် PHP နှင့် MySQL သည်ပေါင်းစည်းထားသောဇာတ်ကောင်အစုံနှင့်ဆက်သွယ်ရန်သေချာစေရန်လိုအပ်သည်။ ယေဘုယျအားဖြင့်ဇာတ်ကောင်သတ်မှတ်ရန်နည်းလမ်းများစွာရှိသည်။
ဒေတာဘေ့စ် connection တစ်ခုတည်ဆောက်ရာတွင် MySQLI :: SET_CHARSet () နည်းလမ်းမှတဆင့်သတ်မှတ်ထားသည့်စာလုံးကိုသတ်မှတ်နိုင်သည်။ ဤနည်းလမ်းသည်နောက်ဆက်တွဲ SQL query စစ်ဆင်ရေးတစ်ခုတည်းသောဇာတ်ကောင်ကိုအသုံးပြုသည်ကိုသေချာစေရန်လက်ရှိဆက်သွယ်မှုအတွက်စာလုံးတစ်လုံးကိုသတ်မှတ်လိမ့်မည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$servername</span></span><span> = </span><span><span class="hljs-string">"localhost"</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"root"</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">""</span></span><span>;
</span><span><span class="hljs-variable">$dbname</span></span><span> = </span><span><span class="hljs-string">"test_db"</span></span><span>;
</span><span><span class="hljs-comment">// ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-variable">$conn</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-variable">$servername</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);
</span><span><span class="hljs-comment">// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>->connect_error) {
</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">$conn</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// ဇာတ်ကောင်ကိုသတ်မှတ်ပါ UTF-8</span></span><span>
</span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8"</span></span><span>);
</span><span><span class="hljs-comment">// အခြားဒေတာဘေ့စ်စစ်ဆင်ရေးများနှင့်အတူဆက်လက်</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>ဤဥပမာတွင် $ conn_charet ("UTF8"), utf-8 ကိုသတ်မှတ်ထားတဲ့ဇာတ်ကောင်ကိုသတ်မှတ်ပါတယ်။ ဤနည်းအားဖြင့် UTF-8 encoding သည် query resent or connection roister ၏သတင်းအချက်အလက်များကို 0 မ်းနည်းသည့်ကုဒ်ပြ problems နာများကိုရှောင်ရှားရန်သို့မဟုတ်ဆက်သွယ်မှုအမှားအချက်အလက်များမည်သို့ပင်ရှိစေလိမ့်မည်။
ဒေတာဘေ့စ်သို့မဟုတ်စားပွဲ၏ပုံမှန်ဇာတ်ကောင်အစုကို UTF-8 ကိုမသတ်မှတ်ပါက၎င်းသည် carbled code ပြ problems နာများဖြစ်ပေါ်စေနိုင်သည်။ ဇာတ်ကောင်အစုံ, ဒေတာဘေ့စ်, စားပွဲဝိုင်းနှင့်ကွက်လပ်ကို unf-8 ကို UTF-8 ကို UTF-8 သို့သတ်မှတ်နိုင်သည်။
ဒေတာဘေ့စ်၏ဇာတ်ကောင်အစုံကိုပြုပြင်မွမ်းမံပါ။
<span><span><span class="hljs-keyword">ALTER</span></span><span> DATABASE test_db </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8_general_ci;
</span></span>စားပွဲ၌ဇာတ်ကောင်အစုကိုပြုပြင်မွမ်းမံပါ။
<span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table_name </span><span><span class="hljs-keyword">CONVERT</span></span><span> </span><span><span class="hljs-keyword">TO</span></span><span> </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8_general_ci;
</span></span>စားပွဲ၌ကွက်လပ်တွင်ကွက်လပ်များကိုပြင်ဆင်ပါ။
<span><span><span class="hljs-keyword">ALTER</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> your_table_name CHANGE column_name column_name </span><span><span class="hljs-type">VARCHAR</span></span><span>(</span><span><span class="hljs-number">255</span></span><span>) </span><span><span class="hljs-type">CHARACTER</span></span><span> </span><span><span class="hljs-keyword">SET</span></span><span> utf8 </span><span><span class="hljs-keyword">COLLATE</span></span><span> utf8_general_ci;
</span></span>connection တစ်ခုစီအတွက်အက်ခရာသတ်မှတ်ထားရန်သင်ကိုယ်တိုင်အက်ခရာချမှတ်ရန်လိုအပ်ကြောင်းသင်တွေ့ရှိပါက MySQL ၏ configuration file ( My.CNF သို့မဟုတ် My.ini ) တွင် Global Claits set ကိုသတ်မှတ်ရန်စဉ်းစားပါ။ အောက်ပါပြင်ဆင်မှုကို [MySQLD] area ရိယာတွင်ထည့်ပါ။
<span><span><span class="hljs-section">[mysqld]</span></span><span>
</span><span><span class="hljs-attr">character-set-server</span></span><span>=utf8
</span></span>ထို့နောက်အပြောင်းအလဲများအကျိုးသက်ရောက်ရန် MySQL ဝန်ဆောင်မှုကိုပြန်လည်စတင်ပါ။
ဒေတာဘေ့စ်နှင့်ဆက်သွယ်မှုချိန်ညှိချက်များအပြင် PHP configuration နှင့် operating system ၏ဇာတ်ကောင်အစုံသည်ဒေတာဘေ့စ်လုပ်ငန်း၏ဇာတ်ကောင်အစုံကိုလည်းအကျိုးသက်ရောက်နိုင်သည်။ သင်၏ PHP ပတ် 0 န်းကျင်နှင့် operating systems system ၏ဇာတ်ကောင်အစုကို UTF-8 ကိုသတ်မှတ်ထားကြောင်းသေချာအောင်လုပ်ပါ။ ၎င်းကိုစစ်ဆေးနိုင်သည်။
PHP default character set ကိုစစ်ဆေးပါ - လက်ရှိ PHP ပတ်ဝန်းကျင်၏ set settings ကိုကြည့်ရန် Phpinfo () function ကိုသင်အသုံးပြုနိုင်သည်။
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">phpinfo</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>operating system character set ကိုစစ်ဆေးပါ - Linux Systems တွင် Linux System များတွင်သင် locale command ကို သုံး. လက်ရှိစနစ်၏ set settings settings ကိုကြည့်ရန်။
<span><span>locale
</span></span>MySQLI :: $ Connect_ERRORR သည် အများအားဖြင့်မကိုက်ညီသည့်စာလုံးများဖြင့်ဖုံးကွယ်ထားသော concled code ကိုပြန်ပို့သည်။ အမှိုက်သရိုက်ကုဒ်ပြ problems နာများကိုရှောင်ရှားရန်ဒေတာဘေ့စ်, စားပွဲနှင့်လယ်ကွင်းများနှင့် php ပတ်ဝန်းကျင်၏ဇာတ်ကောင် set settings ကိုသေချာစေရန်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်သောအခါ Datab-8 သို့ Set Clublitly ကိုအတိအလင်းသတ်မှတ်နိုင်သည်။ ဤအဆင့်ဆင့်မှတစ်ဆင့်ဇာတ်ကောင် encoding ကြောင့်ဖြစ်ပေါ်လာသောကျောက်တုံးများပြ problem နာကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီး PHP နှင့် MySQL အကြားဆက်သွယ်မှုသည်ချောချောမွေ့မွေ့ဖြစ်နိုင်သည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
mysqli