လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Center Connects Sets ကိုအလိုအလျောက်စစ်ဆေးပြီးသတ်မှတ်ထားသည့်အထွေထွေဆက်သွယ်မှုအတန်းကိုရေးပါ - MySQLI :: Get_charset + Set_charset ကို encapsulate

Center Connects Sets ကိုအလိုအလျောက်စစ်ဆေးပြီးသတ်မှတ်ထားသည့်အထွေထွေဆက်သွယ်မှုအတန်းကိုရေးပါ - MySQLI :: Get_charset + Set_charset ကို encapsulate

M66 2025-05-18

PHP Development တွင်ဇာတ်ကောင်များသတ်မှတ်ထားသည့်ပြ issues နာများသည်ဘုံနှင့်အလွယ်တကူလျစ်လျူရှုထားသည့်အသေးစိတ်အချက်အလက်များဖြစ်သည်။ အကယ်. ဇာတ်ကောင်အစုံမှန်ကန်စွာမသတ်မှတ်ထားပါက၎င်းသည်တရုတ်၏ carbled code, အချက်အလက်သိုလှောင်မှုခြွင်းချက်များဖြစ်ပေါ်စေနိုင်သည်။
ဤဆောင်းပါးသည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ပြီးနောက်လက်ရှိတွင်အသုံးပြုသောဇာတ်ကောင်သတ်မှတ်ချက်ကိုအလိုအလျောက်ရှာဖွေတွေ့ရှိရန်နှင့်လျှောက်လွှာသည်ဘာသာစကားမျိုးစုံအချက်အလက်များကိုတည်ငြိမ်ပြီးယုံကြည်စိတ်ချစွာလုပ်ဆောင်ရန်လိုအပ်သည့်အခါအလိုအလျောက်သတ်မှတ်ထားသောအက္ခရာများကိုအလိုအလျောက်ပြောင်းရန်လိုအပ်သည့်အချက်ကိုမည်သို့ရေးသားရမည်ကိုဖော်ပြလိမ့်မည်။

MySQLI :: get_chariset နှင့် set_charset ကိုအဘယ်ကြောင့် letsatfulate

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 ယိုစိမ့်မှုကိုရှောင်ရှားရန်ဆက်သွယ်မှုမလိုအပ်သည့်အခါတက်ကြွစွာ ဆက်သွယ်ပါ

Extensions: connection configuration နှင့်အမှားမှတ်တမ်း

အစစ်အမှန်စီမံကိန်းတစ်ခုတွင် configuration file (ဥပမာ config.php ကဲ့သို့) ဒေတာဘေ့စ် parameters များကိုသင် load လုပ်ချင်ပေမည် ဥပမာအားဖြင့်:

 error_log('ဒေတာဘေ့စ်အမှား: ' . $this->mysqli->error, 3, '/var/log/db_errors.log');

သင် PDE သို့မဟုတ်အခြားဒေတာဘေ့စ်စာကြည့်တိုက်များကိုလည်းအရောင်းအ 0 ယ်များ,

ဥပမာ - M66.net ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ

Domain Name Name Name နှင့် Database နှင့်သင်ဆက်သွယ်လိုပါက၎င်းကိုသင်ဤကဲ့သို့သောရေးနိုင်သည်။