<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ဒီမှာဘယ်လိုပြရမလဲဆိုတာကိုဒီမှာပါ PHP အတွက်အသုံးပြုခဲ့သည် mysqli ဒေတာဘေ့စ်ဆက်သွယ်မှုမျိုးစုံကိုတည်ဆောက်ပြီးဇာတ်ကောင်အစုံများကိုစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-comment">// မှတ်သား:ဒီအပိုင်းကစာသားနဲ့ဘာမှမဆိုင်ပါဘူး,သာဥပမာအားဖြင့်သာ</span></span><span>
</span><span><span class="hljs-variable">$mysqli1</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-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user1"</span></span><span>, </span><span><span class="hljs-string">"pass1"</span></span><span>, </span><span><span class="hljs-string">"db1"</span></span><span>);
</span><span><span class="hljs-variable">$mysqli2</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-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user2"</span></span><span>, </span><span><span class="hljs-string">"pass2"</span></span><span>, </span><span><span class="hljs-string">"db2"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli1</span></span><span>->connect_error || </span><span><span class="hljs-variable">$mysqli2</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-comment">// ချိတ်ဆက်နှစ်ခု၏ဇာတ်ကောင်သတ်မှတ်ထားတဲ့နာမည်ကိုပုံနှိပ်ပါ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဆက်1ဇာတ်ကောင်အစုံ:"</span></span><span> . </span><span><span class="hljs-variable">$mysqli1</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>() . PHP_EOL;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဆက်2ဇာတ်ကောင်အစုံ:"</span></span><span> . </span><span><span class="hljs-variable">$mysqli2</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>() . PHP_EOL;
</span><span><span class="hljs-meta">?></span></span><span>
---
</span><span><span class="hljs-comment"># တည်နေ多个数据库ဆက်下如何使用 mysqli::character_set_name 确保ဇာတ်ကောင်အစုံ一致?</span></span><span>
တည်နေ PHP ၏ Web ဖွံ့ဖြိုးမှုအောက်မှာ,我们经常会同时ဆက်多个数据库。ဥပမာအားဖြင့်,ဒေတာဘေ့စ်သည်အသုံးပြုသူအချက်အလက်များကိုသိုလှောင်ထားသည်,အခြားဒေတာဘေ့စ်ကိုမှတ်တမ်းများသို့မဟုတ်အစီရင်ခံစာများအတွက်အသုံးပြုသည်。တည်နေ这种情况下,如果不同၏数据库ဆက်使用了不一致၏ဇာတ်ကောင်အစုံ,၎င်းသည် barbled code ကိုသိမ်းဆည်းထားရန်နှင့်ဖတ်ရန်ဖြစ်စေနိုင်သည်။、ပုံမှန်မဟုတ်သောသို့မဟုတ်ပင်လုံခြုံမှုအန္တရာယ်များပင်。ထိုကေြာင့်,ကျိုးကြောင်းဆီလျော်သောအသုံးပြုမှု **`mysqli::</span><span><span class="hljs-variable constant_">character_set_name</span></span><span>`** 来检测并统一ဇာတ်ကောင်အစုံ,是保障系统稳定性၏重要一环。
</span><span><span class="hljs-comment">## 1. `mysqli::character_set_name` ၏作用 </span></span><span>
`mysqli::</span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>()` 方法用于返回当前ဆက်所使用၏ဇာတ်ကောင်အစုံ名称。它不会改变ဇာတ်ကောင်အစုံ,ရုံစစ်ဆေးရေးဂိတ်ပေးပါ。က,我们可以တည်နေ运行时确认数据库ဆက်၏ဇာတ်ကောင်အစုံ是否符合预期。
နမူနာ:
```php
</span><span><span class="hljs-variable">$mysqli</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-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"dbname"</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>(); </span><span><span class="hljs-comment">// ဥပမာအားဖြင့်:utf8mb4</span></span><span>
</span></span>
အမှန်တကယ်စီမံကိန်းများတွင်ဘုံပြ problems နာများမှာ -
အသုံးပြုမှု Utf8MB4 ကိုအသုံးပြုသော UTF8MB4 နှင့်ဒေတာဘေ့စ်ခကို လက်တင်ဘာသာစကား ဖြင့် Defaults;
အဆိုပါဇာတ်ကောင်အစုံအနေဖြင့်ထည့်သွင်းစဉ်အတိအလင်းသတ်မှတ်ထားသော,
နှိုင်းယှဉ်ခြင်းနှင့် sorting အတွက်ခြွင်းချက်များပစ်ချခြင်း၏ရောနှောဇာတ်ကောင်အစုံ။
ဆက်သွယ်မှုတစ်ခုစီပြီးဆုံးပြီးနောက်ချက်ချင်းသတ်မှတ်ထားသည့်စာလုံးကိုစစ်ဆေးခြင်းဖြင့်ဤဝှက်ထားသောအန္တရာယ်များကိုရှောင်ရှားနိုင်သည်။
ချိတ်ဆက်သောအခါဇာတ်ကောင် set ကိုသတ်မှတ်ပါ
<span><span><span class="hljs-variable">$mysqli</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-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"dbname"</span></span><span>);
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8mb4"</span></span><span>);
</span></span>
ဤသည်ဆက်သွယ်မှုသည်ကျွန်ုပ်တို့လိုအပ်သောဇာတ်ကောင်သတ်မှတ်ချက်ကိုအမြဲအသုံးပြုသည်။
ချက်လက်မှတ်စဉ်အတွင်း character_set_name ကို အသုံးပြုပါ
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>() !== </span><span><span class="hljs-string">"utf8mb4"</span></span><span>) {
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">set_charset</span></span><span>(</span><span><span class="hljs-string">"utf8mb4"</span></span><span>);
}
</span></span>
၎င်းသည်ဆာဗာဖွဲ့စည်းမှုကွဲပြားမှုသည်ကွဲပြားလျှင်ပင်လျှောက်လွှာအလွှာသည်ဆက်လက်တည်ရှိနေသည်ဟုသေချာစေသည်။
မျိုးစုံဆက်သွယ်မှုများ၏စည်းလုံးအသိပညာ
<span><span><span class="hljs-variable">$connections</span></span><span> = [</span><span><span class="hljs-variable">$mysqli1</span></span><span>, </span><span><span class="hljs-variable">$mysqli2</span></span><span>];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$connections</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$conn</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>-></span><span><span class="hljs-title function_ invoke__">character_set_name</span></span><span>() !== </span><span><span class="hljs-string">"utf8mb4"</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">"utf8mb4"</span></span><span>);
}
}
</span></span>
Database ဆာဗာ၏ default settings ကိုမှီခိုခြင်းထက် control_charet ကို အပြီးသတ် သတ်မှတ်ထားသည့်ဇာတ်ကောင်ကိုသတ်မှတ်ပါ ။
စောင့်ကြည့်လေ့လာခြင်းနှင့်သစ်ထုတ်လုပ်ခြင်း - ဖွံ့ဖြိုးတိုးတက်မှုသို့မဟုတ်စမ်းသပ်ခြင်းပတ်ဝန်းကျင်တွင်ပတ် 0 န်းကျင်သည်တသမတ်တည်းဖြစ်ကြောင်းသေချာစေရန် Gethor_set_name ၏ပြန်လာတန်ဖိုးကိုဖြင့်သစ်ထုတ်လုပ်ခြင်းကိုပြုလုပ်နိုင်သည်။
အဖွဲ့လိုက်သဘောတူညီချက် - ဒေတာဘေ့စ်စီမံကိန်းများတွင်စည်းလုံးညီညွတ်သောဇာတ်ကောင်စံသတ်မှတ်ချက်စံနှုန်းကိုအလားအလာရှိသောပြ problems နာများကိုလျှော့ချရန် (များသောအားဖြင့် UTF8MB4 ) ကိုရှင်းလင်းစွာသဘောတူထားပါသည်။
ဒေတာဘေ့စ် connection sararios မျိုးစုံတွင် MySQLI :: Strows_set_set_name သည် လက်ရှိချိတ်ဆက်ထားသည့်ဇာတ်ကောင်အစုံကိုစစ်ဆေးရန်အဆင်ပြေသောနည်းလမ်းဖြစ်သည်။ Set_Charet ၏အသုံးပြုမှုနှင့် တွဲဖက်. Constities-Library Operations တွင်ဇာတ်ကောင်ကိုက်ညီမှုကိုထိထိရောက်ရောက်အတည်ပြုနိုင်ပြီး concled code နှင့်လိုက်ဖက်တဲ့ပြ issues နာများကိုရှောင်ရှားနိုင်ခဲ့သည်။ ၎င်းသည် Multi-Store စနစ်များတွင်လျစ်လျူရှုမရသောအသေးစိတ်အချက်အလက်များဖြစ်ပြီးအချက်အလက်တိကျမှုနှင့်လျှောက်လွှာတည်ငြိမ်မှုကိုသေချာစေရန်အဓိကခြေလှမ်းလည်းဖြစ်သည်။
<span></span>
သက်ဆိုင်သောတက်(ဂ်)များ:
mysqli