လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> static code ခွဲခြမ်းစိတ်ဖြာခြင်း၏အစိတ်အပိုင်းတစ်ခုအဖြစ် MySQLI :: get_warenings ကိုသုံးပါ

static code ခွဲခြမ်းစိတ်ဖြာခြင်း၏အစိတ်အပိုင်းတစ်ခုအဖြစ် MySQLI :: get_warenings ကိုသုံးပါ

gitbox 2025-05-29

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

MySQLI :: Get_warenings ကို လတ်တလော MySQL စစ်ဆင်ရေးမှထုတ်လုပ်သောသတိပေးချက်ကိုရရှိရန်အသုံးပြုသည်။ အမှားများနှင့်နှိုင်းယှဉ်ပါကသတိပေးချက်များသည် SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်ခြင်းများကိုမထိခိုက်သေးသော်လည်းဒေတာချွင်းချက်များ, စွမ်းဆောင်ရည်ဆိုင်ရာပြ issues နာများသို့မဟုတ်ယုတ္တိဆိုင်ရာပြ issues နာများသို့မဟုတ်ယုတ္တိဆိုင်ရာအားနည်းချက်များ

 $mysqli = new mysqli('gitbox.net', 'user', 'pass', 'database');
if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ:" . $mysqli->connect_error);
}

$result = $mysqli->query("YOUR SQL QUERY");
if ($result) {
    if ($warnings = $mysqli->get_warnings()) {
        do {
            echo "သတိပေးကုဒ်: " . $warnings->errno . " - " . $warnings->message . "\n";
        } while ($warnings->next());
    }
}

ဆင်ခြင်တုံတရားဖြင့်ဤသတိပေးချက်များကိုဖမ်းယူခြင်းနှင့်ကိုင်တွယ်ခြင်းသည်လျှို့ဝှက်အန္တရာယ်များကိုစုဆောင်းခြင်းကိုတားဆီးနိုင်သည်။


2 ။ static ခွဲခြမ်းစိတ်ဖြာအတွက်ကြုံတွေ့ပြနာများ

static ခွဲခြမ်းစိတ်ဖြာခြင်းကိရိယာများ (PHPPSTAN, PSOLS) TORMANTS, PSORS) သည်များသောအားဖြင့်အမျိုးအစားအမှားများ, အလားအလာရှိသောခြွင်းချက်များနှင့်အသုံးမပြုရသေးသော variable များကိုစစ်ဆေးသည်။ Get_warenings သည် ရှုပ်ထွေးသောအရာဝတ်ထုတစ်ခုသို့ပြန်လာသောကြောင့်ဤသတိပေးချက်များကိုကောင်းစွာမစစ်ဆေးပါက code တွင်အသုံးချခြင်းမရှိပါကအောက်ပါအန္တရာယ်များရှိနိုင်သည်။

  • အလားအလာရှိသောအန္တရာယ်များကိုလျစ်လျူရှုခြင်းသို့ ဦး တည်စေသောသတိပေးချက်ကိုစစ်ဆေးမထားပါ။

  • သတိပေးအရာဝတ်ထုကိုမှန်ကန်စွာဖြတ်သန်းခြင်းသို့မဟုတ်ထုတ်ပြန်ခြင်းမရှိပါ။

  • Get_warenings ရလဒ်ကိုအလွဲသုံးစားပြုခြင်းသို့မဟုတ်လျစ်လျူရှုထားသည်။


3 ။ static ခွဲခြမ်းစိတ်ဖြာခြင်းလုပ်ငန်းစဉ်ကိုဘယ်လိုထည့်သွင်းနည်း

3.1 ဓလေ့ထုံးတမ်းစည်းမျဉ်းစည်းကမ်းများသို့မဟုတ်တိုးချဲ့ plugins ရေးသားခြင်း

အချို့သော static ခွဲခြမ်းစိတ်ဖြာခြင်းကိရိယာများသည်အသုံးပြုသူသတ်မှတ်ထားသောစည်းမျဉ်းများကိုထောက်ခံသည်။ အောက်ပါပုံမှန်ပြ problems နာများကို plugins များရေးသားခြင်းဖြင့်ရှာဖွေတွေ့ရှိနိုင်သည်။

  • quet_warenings တစ်ခုချင်းစီကိုစုံစမ်းမှုကွပ်မျက်ခံရပြီးနောက်ခေါ်ယူခြင်းရှိမရှိ။

  • Get_warenings မှပြန်လာသောအရာဝတ်ထုသည်ဖြတ်သန်းသွားပြီး logged လုပ်သည်။

  • သတိပေးချက်အရာဝတ်ထုကိုလျစ်လျူရှုထားသည့်အခြေအနေရှိပါသလား။

ဥပမာ PHPSTAN အတွက် Get_warenings သို့ခေါ်ဆိုမှုကိုခေါ်ဆိုခြင်းရှိမရှိစစ်ဆေးရန်စည်းကမ်းကိုသတ်မှတ်နိုင်သည်

3.2 ရှင်းလင်းစွာကုဒ်သတ်မှတ်ချက်အတွက်လိုအပ်သည်

Team Code သတ်မှတ်ချက်များကိုအတိအလင်းကိုင်တွယ်ရန်လိုအပ်သည့်စစ်ဆင်ရေးများအားလုံးကိုပြုလုပ်ရန်လိုအပ်သည့်အဆင့်သတ်မှတ်ချက်များကိုရေးဆွဲပါ။

  • SQL ကြေငြာချက်ကိုလုပ်ဆောင်ပြီးနောက် MySQLI-> Get_warenings () ကိုခေါ်ပါ။

  • တဆင့်နှင့် output ကိုမှထွက်သို့မဟုတ် log သတိပေးချက်များ။

  • လျစ်လျူရှုမရနိုင်သောသတိပေးချက်များအတွက်ခြွင်းချက်များသို့မဟုတ်စံချိန်တင်အမှားများကိုပစ်ချခြင်းသို့မဟုတ်မှတ်တမ်းတင်ခြင်းအမှားများကိုပစ်ချပါ။

3.3 ယူနစ်စမ်းသပ်မှုလွှမ်းခြုံ

ယူနစ်စစ်ဆေးမှုများသည်ဒေတာဘေ့စ်ကိုထုတ်ပေးရန် Database ကိုဖန်တီးရန် Database တစ်ခုကိုဖန်တီးရန်ဆိုဒ်ကိုမှန်ကန်စွာဖမ်းယူနိုင်ကြောင်းစစ်ဆေးပါ။

 // နမူနာဒေတာဘေ့စ်သတိပေးစမ်းသပ်စစ်ဆေးမှုဥပမာ
class DatabaseWarningTest extends \PHPUnit\Framework\TestCase
{
    public function testGetWarningsHandled()
    {
        $mysqli = new mysqli('gitbox.net', 'user', 'pass', 'database');
        $mysqli->query("YOUR SQL QUERY THAT CAUSES WARNING");

        $warnings = $mysqli->get_warnings();
        $this->assertNotNull($warnings, 'သတိပေးချက်များကိုဖမ်းမိသင့်သည်');
        while ($warnings) {
            $this->assertIsInt($warnings->errno);
            $this->assertIsString($warnings->message);
            $warnings = $warnings->next();
        }
    }
}

4 ။ Code သရုပ်ပြခြင်း - အပြည့်အ 0 သတိထားသည့်အပြောင်းအလဲလုပ်ငန်းစဉ်

 $mysqli = new mysqli('gitbox.net', 'user', 'pass', 'database');
if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ:" . $mysqli->connect_error);
}

$query = "INSERT INTO users (name, email) VALUES ('Zhang San', '[email protected]')";
$result = $mysqli->query($query);

if ($result === false) {
    // အမှားများကိုကိုင်တွယ်
    echo "SQLအမှား:" . $mysqli->error;
} else {
    $warnings = $mysqli->get_warnings();
    if ($warnings) {
        do {
            // သတိပေးသတင်းအချက်အလက်မှတ်တမ်းတင်,သို့မဟုတ်စီမံကိန်းလိုအပ်ချက်များအရ၎င်းကိုကိုင်တွယ်ပါ
            error_log("数据库သတိပေးကုဒ်: {$warnings->errno}, အကေြာင်းကြားချက်: {$warnings->message}");
        } while ($warnings->next());
    }
    echo "စစ်ဆင်ရေးအောင်မြင်သောဖြစ်ပါတယ်,နှင့်သတိပေးလုပ်ငန်းများ၌ခဲ့တာဖြစ်ပါတယ်";
}

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

MySQLI :: get_warenings ကို static ခွဲခြမ်းစိတ်ဖြာခြင်းလုပ်ငန်းစဉ်သို့ထည့်သွင်းခြင်းမှာဒေတာဘေ့စ်စစ်ဆင်ရေးသတိပေးချက်များကိုမှန်ကန်စွာဖမ်းယူနိုင်ပြီးလုပ်ငန်းများ၌ပြုလုပ်နိုင်ရန်အဓိကရည်ရွယ်ချက်ဖြစ်သည်။ Static ခွဲခြမ်းစိတ်ဖြာခြင်းစည်းမျဉ်းများကိုစိတ်ကြိုက်ပြုပြင်ခြင်းအားဖြင့်အဖွဲ့၏အသေးစိတ်အချက်အလက်များအားကောင်းစေခြင်းနှင့်စည်းမျဉ်းစည်းကမ်းများတိုးတက်အောင်ပြုလုပ်ခြင်း, ကုဒ်အရည်အသွေးကိုသိသိသာသာတိုးတက်အောင်လုပ်နိုင်သည်။ ကောင်းမွန်သောခြွင်းချက်ကိုင်တွယ်ခြင်းနှင့်သစ်ထုတ်လုပ်ခြင်းကိုပေါင်းစပ်ခြင်း, developer များသည်သတိပေးချက်များကိုလျစ်လျူရှုခြင်းကြောင့်ဖြစ်ပေါ်လာသောအလားအလာရှိသောပြ problems နာများကိုရှောင်ရှားရန် developer များသည် develabase interaction code ကိုပိုမိုအေးဆေးတည်ငြိမ်စွာထိန်းသိမ်းနိုင်သည်။