လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI :: get_warenings ကိုဒေတာဘေ့စ်ကားမောင်းသူအတန်းများတွင်အကောင်းဆုံးအလေ့အကျင့်များ

MySQLI :: get_warenings ကိုဒေတာဘေ့စ်ကားမောင်းသူအတန်းများတွင်အကောင်းဆုံးအလေ့အကျင့်များ

gitbox 2025-05-28

1 ။ MySQLI :: get_warenings ၏အခန်းကဏ် ence ကိုနားလည်ပါ

MySQLI :: Get_warenings သည် SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါသတိပေးချက်များအားလုံးပါ 0 င်သည့် MySQLI_Warning အရာဝတ်ထုများကိုပေါင်းစပ်ထားသည်။ အချက်အလက်များစစ်ဆေးခြင်းကဲ့သို့သောအချက်အလက်များစစ်ဆေးခြင်း, ဒေတာအမျိုးအစားမတိုက်ဆိုင်, ညွှန်းကိန်းများ, အညွှန်းကိန်းများ,

သို့သော်၎င်းသည်ဤနည်းလမ်းကိုတိုက်ရိုက်ခေါ်ဆိုရန်ခက်ခဲသည်, ၎င်းသည်ပြန်လာသော Linked List ဖွဲ့စည်းပုံကိုဖြတ်သန်းရန်လိုအပ်သည်။ ၎င်းကိုစာသင်ခန်းတစ်ခုသို့ encapsating လုပ်ပြီးနောက်ခေါ်ဆိုမှုဖြစ်စဉ်ကိုရိုးရှင်းအောင်ပြုလုပ်နိုင်ပြီးသတိပေးသတင်းအချက်အလက်ကိုတစ်ပုံစံတည်းဖြင့်ကိုင်တွယ်နိုင်သည်။


2 ။ ထုပ်ပိုးဘို့အခြေခံအတွေးအခေါ်များ

  • ဒေတာဘေ့စ်ယာဉ်မောင်းအတန်းတွင်သတိပေးသတင်းအချက်အလက်ရယူရန်အများပြည်သူနည်းလမ်းကိုထည့်ပါ။

  • ဤနည်းလမ်းသည် MySQLI :: Get_warenings နှင့်သတိပေးစာရင်းတွင်ပါ 0 င်သည်။ သတိပေးချက်အားလုံးကိုသတိပေးစာရင်းအားလုံးကိုခွဲထုတ်ခြင်း,

  • လွယ်ကူသောသစ်ထုတ်လုပ်မှုသို့မဟုတ် display ကိုများအတွက် format ချ output ကိုထောက်ပံ့ပေးသည်။

  • အလားအလာရှိသောပြ problems နာများကိုရိုက်ကူးရန် SQL စစ်ဆင်ရေးများကိုလုပ်ဆောင်ပြီးနောက်ဤနည်းလမ်းကိုလိုလားသည်။


3 ။ နမူနာကုဒ်အကောင်အထည်ဖော်မှု

 <?php

class DatabaseDriver
{
    /** @var mysqli */
    protected $mysqli;

    public function __construct($host, $user, $password, $dbname, $port = 3306)
    {
        $this->mysqli = new mysqli($host, $user, $password, $dbname, $port);
        if ($this->mysqli->connect_errno) {
            throw new Exception("Connect failed: " . $this->mysqli->connect_error);
        }
    }

    /**
     * ကရိယာတန်းဆာ SQL မေးမြန်း
     *
     * @param string $sql
     * @return mysqli_result|bool
     */
    public function query(string $sql)
    {
        $result = $this->mysqli->query($sql);
        // မေးမြန်း后可以检查警告
        $warnings = $this->getWarnings();
        if (!empty($warnings)) {
            // သင်ဒီမှာ logging သို့မဟုတ်ခြွင်းချက်ကိုင်တွယ်နိုင်ပါတယ်
            foreach ($warnings as $warning) {
                error_log("MySQL Warning [{$warning['errno']}]: {$warning['message']} (SQLSTATE: {$warning['sqlstate']})");
            }
        }
        return $result;
    }

    /**
     * လက်ရှိဆက်သွယ်မှုအတွက်သတိပေးစာအားလုံးကိုရယူပါ
     *
     * @return array သတိပေးစာခင်းကျင်း,တစ်ခုချင်းစီကိုဒြပ်စင်ပါဝင်သည် errno, sqlstate, message
     */
    public function getWarnings(): array
    {
        $warnings = [];
        $warning = $this->mysqli->get_warnings();
        while ($warning) {
            $warnings[] = [
                'errno' => $warning->errno,
                'sqlstate' => $warning->sqlstate,
                'message' => $warning->message,
            ];
            $warning = $warning->next;
        }
        return $warnings;
    }

    public function close()
    {
        $this->mysqli->close();
    }
}

// အသုံးပြုမှုဥပမာ
$db = new DatabaseDriver('localhost', 'root', 'password', 'testdb');
$db->query("INSERT INTO users (id, name) VALUES (1, 'Alice')");
$db->close();


4 ။ အဓိကအချက်ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်တိုးတက်မှုစွမ်းရည်

4.1 ထပ်ခါတလဲလဲသတိပေးချက်များကိုရှောင်ပါ

Get_warenings သည် လက်ရှိဆက်သွယ်မှုအတွက်သတိပေးချက်တစ်ခုရရှိပြီး၎င်းတို့ကိုသန့်ရှင်းရေးမပြုပါကသို့မဟုတ်စနစ်တကျမသုံးပါကသတိပေးအဟောင်းကိုထပ်ခါတလဲလဲဖတ်ရှုနိုင်သည်။ များသောအားဖြင့်ကြေ ငြာ ချက်တစ်ခုစီကိုကွပ်မျက်ခံရပြီးသည့်အခါ,

4.2 စည်းလုံးညီညွတ်သောချွင်းချက်သို့မဟုတ်မှတ်တမ်းပြုပြင်ခြင်း

Encapsulation အတွက်သတိပေးအချက်အလက်များကိုသတိပေးအချက်အလက်များပြန်ပို့ရန်အကြံပြုသည်။ ခေါ်ဆိုမှုအလွှာသည်မှတ်တမ်းများကိုမှတ်တမ်းတင်ခြင်းသို့မဟုတ်ခြွင်းချက်များကိုမှတ်တမ်းတင်ခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။

4.3 လိုက်ဖက်တဲ့နှင့်အမှားကိုင်တွယ်

အစောပိုင်း PHP ဗားရှင်းအချို့သည် Get_warenings အတွက်မပြည့်စုံသောအထောက်အပံ့များရှိသည်။ ဗားရှင်းသွယ်ဝိုက်ခြင်းကို encapsularating on or version ကိုင်တွယ်သည့်နည်းလမ်းများသို့ပြန်ရောက်စေရန်ဗားရှင်းစစ်ဆေးခြင်းကိုအသုံးပြုသင့်သည်။


5 ။ အကျဉ်းချုပ်

MySQLI :: Get_warenings ကို ဒေတာဘေ့စ်၏အတန်းထဲတွင် Encapsulning encapsufulnings code ကိုပြန်လည်သုံးသပ်ခြင်းကိုတိုးတက်စေရုံသာမက, ကျိုးကြောင်းဆီလျော်သော encapsulation နှင့်ခေါ်ဆိုမှုဖြင့်စနစ်၏ကြံ့ခိုင်မှုနှင့် debugging စွမ်းရည်များကိုအလွန်တိုးမြှင့်နိုင်သည်။

အကယ်. သင်သည်ဒေတာဘေ့စ်ယာဉ်မောင်းအတန်းကိုဒီဇိုင်းဆွဲခြင်းသို့မဟုတ်ထိန်းသိမ်းထားသည်ဆိုပါကသတိပေးချက်ယန္တရားများကိုထည့်သွင်းရန်နှင့်ဒေတာဘေ့စ်လုပ်ငန်းများအားပိုမိုပွင့်လင်းမြင်သာမှုရှိစေရန် Log သို့မဟုတ် Nonubline ယန္တရားများဖြင့်ပေါင်းစပ်ရန်အထူးအကြံပြုလိုပါသည်။