PHP Development တွင်ဇာတ်ကောင်များသတ်မှတ်ထားသည့်ပြ issues နာများသည်ဘုံနှင့်အလွယ်တကူလျစ်လျူရှုထားသည့်အသေးစိတ်အချက်အလက်များဖြစ်သည်။ အကယ်. ဇာတ်ကောင်အစုံမှန်ကန်စွာမသတ်မှတ်ထားပါက၎င်းသည်တရုတ်၏ carbled code, အချက်အလက်သိုလှောင်မှုခြွင်းချက်များဖြစ်ပေါ်စေနိုင်သည်။
ဤဆောင်းပါးသည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ပြီးနောက်လက်ရှိတွင်အသုံးပြုသောဇာတ်ကောင်သတ်မှတ်ချက်ကိုအလိုအလျောက်ရှာဖွေတွေ့ရှိရန်နှင့်လျှောက်လွှာသည်ဘာသာစကားမျိုးစုံအချက်အလက်များကိုတည်ငြိမ်ပြီးယုံကြည်စိတ်ချစွာလုပ်ဆောင်ရန်လိုအပ်သည့်အခါအလိုအလျောက်သတ်မှတ်ထားသောအက္ခရာများကိုအလိုအလျောက်ပြောင်းရန်လိုအပ်သည့်အချက်ကိုမည်သို့ရေးသားရမည်ကိုဖော်ပြလိမ့်မည်။
MySQLI extension သည် get_charet () နှင့် set_charet () နည်းလမ်းများကိုထောက်ပံ့ပေးသည်။
Get_charset () သည်လက်ရှိဆက်သွယ်မှု၏ set information ကိုရရှိရန်အသုံးပြုသည်။
Set_charet () ဆက်သွယ်မှုကအသုံးပြုသောစာလုံးကိုသတ်မှတ်ရန်အသုံးပြုသည်။
သို့သော် အမှန်တကယ်အသုံးပြုမှုတွင်များစွာသော developer များစွာသည်ဆက်သွယ်မှုတစ်ခုဖန်တီးပြီးနောက် developmese set ကိုစစ်ဆေးရန်သို့မဟုတ်ပြင်ဆင်ရန်သို့မဟုတ်ပြုပြင်ရန်မကြာခဏမေ့သွားတတ်ကြသည်။
ဤနည်းလမ်းနှစ်မျိုးကိုသာမန်ဆက်သွယ်မှုအတန်းအစားသို့ encapsuating လုပ်နိုင်သည်။
? အလိုအလျှောက်လက်ရှိဇာတ်ကောင် set ကို detect
? လိုအပ်သောအက်ခရာအလုံးအရင်းကိုအလိုအလျောက်ပြောင်းပါ ( UTF8MB4 ကဲ့သို့သော)
? ထပ်ခါတလဲလဲကုဒ်ကိုလျှော့ချရန်အတိုချုပ်နှင့်တသမတ်တည်းသော interface ကိုပေးပါ
အောက်ဖော်ပြပါရိုးရှင်းသော DBConnection class အကောင်အထည်ဖော်မှုသည် MySQLI ၏ဆက်သွယ်မှုယုတ္တိဗေဒကိုလိုက်နာပြီးဆက်သွယ်မှုပြီးနောက်သတ်မှတ်ထားသောစာလုံးကိုအလိုအလျောက်ညှိပေးသည်။
<?php
class DbConnection
{
private $mysqli;
private $host;
private $username;
private $password;
private $database;
private $charset;
public function __construct($host, $username, $password, $database, $charset = 'utf8mb4')
{
$this->host = $host;
$this->username = $username;
$this->password = $password;
$this->database = $database;
$this->charset = $charset;
$this->connect();
}
private function connect()
{
$this->mysqli = new mysqli($this->host, $this->username, $this->password, $this->database);
if ($this->mysqli->connect_error) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $this->mysqli->connect_error);
}
// လက်ရှိဇာတ်ကောင်အစုံ detect
$currentCharsetInfo = $this->mysqli->get_charset();
if ($currentCharsetInfo) {
$currentCharset = $currentCharsetInfo->charset;
if (strtolower($currentCharset) !== strtolower($this->charset)) {
// သတ်မှတ်ထားသောဇာတ်ကောင်အစုံမှသတ်မှတ်ထားပါ
if (!$this->mysqli->set_charset($this->charset)) {
die('ဇာတ်ကောင်အစုံချမှတ်ရန်ပျက်ကွက်: ' . $this->mysqli->error);
}
}
} else {
die('လက်ရှိဇာတ်ကောင်ကို set သတင်းအချက်အလက်မရနိုင်ပါ: ' . $this->mysqli->error);
}
}
public function getConnection()
{
return $this->mysqli;
}
public function close()
{
if ($this->mysqli) {
$this->mysqli->close();
}
}
}
// အသုံးပြုမှုဥပမာ
$db = new DbConnection('localhost', 'db_user', 'db_pass', 'db_name');
// တစ် ဦး စုံစမ်းမှု execute
$result = $db->getConnection()->query('SELECT * FROM example_table');
if ($result) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
$db->close();
1 ?? ဆောက်လုပ်ရေးသည်ဆက်သွယ်မှုသတင်းအချက်အလက်နှင့်ပစ်မှတ်ဇာတ်ကောင် setr > <br> Emoji နှင့်ဘာသာစကားမျိုးစုံပါ 0 င်မှုများကိုပိုမိုကောင်းမွန်စွာထောက်ပံ့နိုင်သည့်အကြံပြုထားသော MySQL ဇာတ်ကောင်အစုံဖြစ်သော UTF8MB4 ဖြစ်သည်။
2 ?? အောင်မြင်သောဆက်သွယ်မှုပြီးနောက်လက်ရှိဇာတ်ကောင်ကိုစစ်ဆေးပါ Current Connection မှအသုံးပြုသောစာလုံးကိုရယူရန် Get_charet () ကိုခေါ်ပါ။
3 ?? ကွဲပြားခြားနားလျှင်, အလိုအလျောက်ပြောင်းလဲ <br> <br> Set_charet () ကိုခေါ်ဆိုခြင်း MySQL ၏ပုံမှန်ပြင်ဆင်မှုအပေါ်မှီခိုခြင်းမှရှောင်ရှားရန်သတ်မှတ်ထားသောဇာတ်ကောင်ကိုပြောင်းလဲခြင်း။
4 ?? ပိတ်ခြင်းနည်းလမ်းကိုထောက်ပံ့ <br> <br> connection ယိုစိမ့်မှုကိုရှောင်ရှားရန်ဆက်သွယ်မှုမလိုအပ်သည့်အခါတက်ကြွစွာ ဆက်သွယ်ပါ ။
အစစ်အမှန်စီမံကိန်းတစ်ခုတွင် configuration file (ဥပမာ config.php ကဲ့သို့) ဒေတာဘေ့စ် parameters များကိုသင် load လုပ်ချင်ပေမည် ။ ဥပမာအားဖြင့်:
error_log('ဒေတာဘေ့စ်အမှား: ' . $this->mysqli->error, 3, '/var/log/db_errors.log');
သင် PDE သို့မဟုတ်အခြားဒေတာဘေ့စ်စာကြည့်တိုက်များကိုလည်းအရောင်းအ 0 ယ်များ,
Domain Name Name Name နှင့် Database နှင့်သင်ဆက်သွယ်လိုပါက၎င်းကိုသင်ဤကဲ့သို့သောရေးနိုင်သည်။