လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI :: MySQLI :: MySQLI_REPORE () PHP ကိုတိုးတက်စေရန် PHP Debugging Emp ကိုတိုးတက်စေရန်နှင့် Database connection အမှားများကိုလျင်မြန်စွာရှာဖွေရန်။

MySQLI :: MySQLI :: MySQLI_REPORE () PHP ကိုတိုးတက်စေရန် PHP Debugging Emp ကိုတိုးတက်စေရန်နှင့် Database connection အမှားများကိုလျင်မြန်စွာရှာဖွေရန်။

M66 2025-06-23

ဒေတာဘေ့စ်ဆက်သွယ်မှုအမှားများသည်နေ့စဉ် PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ခေါင်းကိုက်ခြင်းနှင့်ခေါင်းကိုက်ခြင်းပြ problem နာဖြစ်သည်။ အထူးသဖြင့် MySQLI extensions များကိုအသုံးပြုသောအခါအမှားများသည်မကြာခဏမှုန်ဝါးနေပြီးပြ the နာ၏ရင်းမြစ်ကိုလျင်မြန်စွာရှာဖွေရန်ခက်ခဲသည်။ Debugging ထိရောက်မှုကိုတိုးတက်စေရန် MySQLI :: TRESSQLI_REPORE () သည်အထူးအရေးကြီးသည်။ ဒေတာဘေ့စ်ဆက်သွယ်မှုအမှားများကိုလျင်မြန်စွာဖော်ထုတ်ရန်နှင့်ဖြေရှင်းရန်အတွက်ဤဆောင်းပါးသည်၎င်းတို့၏လုပ်ဆောင်မှုများနှင့်အသုံးပြုမှုကိုနက်နက်နဲနဲမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ MySQLI :: $ errno ကဘာလဲ။

MySQLI :: $ errno သည် MySQLI Object-Orient-Oriented interface ရှိအိမ်ခြံမြေအကျိုးစီးပွားကိုနောက်ဆုံးပေါ်ဒေတာဘေ့စ်စစ်ဆင်ရေးဖြင့်ထုတ်ပေးသောအမှားကုဒ်ကိုပြန်လည်ရောက်ရှိစေသည်။ အမှားမရှိပါက Return Value သည် 0 ဖြစ်သည်။ ဤအမှားကုဒ်ကိုဆုံးဖြတ်ခြင်းဖြင့် developer များသည်အမှားအယွင်းများကိုပိုမိုသိရှိနိုင်သည်။

ဥပမာ -

 $mysqli = new mysqli("localhost", "user", "wrong_password", "database");

if ($mysqli->connect_errno) {
    echo "ဆက်သွယ်မှုမအောင်မြင်ပါ,အမှားကုဒ်: " . $mysqli->connect_errno . "\n";
    echo "အမှားသတင်းစကား: " . $mysqli->connect_error . "\n";
    // 可根据အမှားကုဒ်做精细化处理
    if ($mysqli->connect_errno === 1045) {
        echo "စကားရိပ်:ကျေးဇူးပြု. ဒေတာဘေ့စ်အသုံးပြုသူအမည်သို့မဟုတ်စကားဝှက်မှန်ကန်မှုရှိ,。";
    }
}

အထက်ဖော်ပြပါဥပမာတွင်စကားဝှက်မှားလျှင်အမှားကုဒ် 1045 ကိုပြန်ပို့ပေးလိမ့်မည်။ ဤအမှားကုဒ်ကိုအကဲဖြတ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အသုံးပြုသူသို့မဟုတ် developer ကိုပြင်ဆင်ရန်လှုံ့ဆော်ပေးနိုင်သည်။

2 ။ mysqli_report ()?

MySQLI_REPORE () သည် MySQLI extensions ၏အမှားအယွင်းများကိုသတင်းပို့သည့်အမှားအယွင်းများကိုသတ်မှတ်သည့် configuration function တစ်ခုဖြစ်သည်။ ပုံမှန်အားဖြင့် MySQLI အမှားများသည် boolean သို့မဟုတ် null တန်ဖိုးများကိုသာပြန်လာပြီး developer များကတစ်ဆင့်ချင်းစီကိုစစ်ဆေးရမည်။ အမှားအယွင်းများဖွင့်လှစ်ပြီးနောက် MySQLI သည်သတိပေးချက်သို့မဟုတ်ခြွင်းချက်တစ်ခုကိုချမှတ်လိမ့်မည်။

ဘုံအစီရင်ခံအဆင့်:

  • MySQLI_REPORD_OFF : အမှားအယွင်းများအားလုံးကိုပိတ်ပါ။

  • MySQLI_REPORD_ERROR : အမှားတစ်ခုသတင်းပို့ပါ။

  • MySQLI_REPORT_STRETRE_STRETRESS

  • MySQLI_REPORD_ALL : Syntax သတိပေးချက်များအပါအ 0 င်အမှားအယွင်းများအားလုံးကိုသတင်းပို့ပါ။

ဥပမာ -

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $mysqli = new mysqli("localhost", "user", "wrong_password", "database");
    // မမှန်ကန်ကြောင်းမေးမြန်းမှုကို execute
    $mysqli->query("SELECT * FROM မတည်ရှိတဲ့စားပွဲပေါ်မှာ");
} catch (mysqli_sql_exception $e) {
    echo "အမှားတစ်ခုဖြစ်ပွားခဲ့သည်: " . $e->getMessage() . "\n";
    echo "အမှားကုဒ်: " . $e->getCode() . "\n";
    // သင်ထပ်မံ log သို့မဟုတ်အမှားအယွင်းများကိုအစီရင်ခံနိုင်သည်
    file_put_contents("/var/log/db_errors.log", $e->getMessage(), FILE_APPEND);
}

ဤစာအရေးအသားနည်းလမ်းသည်ကုဒ်ကိုယုတ္တိဗေဒကိုရိုးရှင်းရုံသာမကအမှားအယွင်းများဖြစ်ပေါ်သည့်နေရာကိုလျင်မြန်စွာရှာဖွေရန်, ဖွံ့ဖြိုးရေးအဆင့်တွင်အသုံးပြုရန်အလွန်သင့်တော်သည်။

3 ။ လက်တွေ့ကျွမ်းကျင်မှုများ - အမှားအယွင်းများကိုလျင်မြန်စွာရှာဖွေရန် Errno နှင့်အစီရင်ခံခြင်းယန္တရားကိုပေါင်းစပ်ပါ

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

အကြံပြုစာသားကုဒ်ဖွဲ့စည်းပုံ:

 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
    $mysqli = new mysqli("localhost", "user", "password", "database");
    echo "ဒေတာဘေ့စ်ဆက်သွယ်မှုအောင်မြင်သည်";
} catch (mysqli_sql_exception $e) {
    echo "数据库ဆက်သွယ်မှုမအောင်မြင်ပါ,အမှားသတင်းစကား: " . $e->getMessage();
    
    // 如果需要追踪具体အမှားကုဒ်
    if (strpos($e->getMessage(), '1049') !== false) {
        echo "\nစကားရိပ်:ဒေတာဘေ့စ်မတည်ရှိပါဘူး,ကျေးဇူးပြု. ဒေတာဘေ့စ်အမည်ကိုစစ်ဆေးပါ。";
    } elseif (strpos($e->getMessage(), '1045') !== false) {
        echo "\nစကားရိပ်:မမှန်ကန်သောအသုံးပြုသူအမည်သို့မဟုတ်စကားဝှက်,ကျေးဇူးပြုပြီးလက်မှတ်အချက်အလက်ကိုစစ်ဆေးပါ。";
    }
}

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

 $logData = date('Y-m-d H:i:s') . " ဒေတာဘေ့စ်အမှား: " . $e->getMessage() . "\n";
file_put_contents("https://m66.net/logs/db_errors.log", $logData, FILE_APPEND);

မှတ်ချက် - အထက်ဖော်ပြပါပုံဥပမာတွင် URL domain name ကို M66.net ဖြင့်အစားထိုးထားသည်။ အမှန်တကယ်အခြေအနေအရအဝေးထိန်း log ည့်ဂည့်ခံလွှာကိုကိုင်တွယ်ပါ။

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

MySQLI :: MySQLI_REPORE () ကို အသုံးပြု. PHP Debugging ထိရောက်မှုကိုသိသိသာသာတိုးတက်အောင်လုပ်နိုင်သည်။ Database connection နှင့်ပြ a နာရှိသည့်အခါအမှားများကိုတွေ့နိုင်သည်။ ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တွင်တင်းကျပ်သော mode ( mySqli_report_stress_strict ) ကိုအမြဲတမ်းဖွင့်ရန်အကြံပြုသည်။

Debugging သည်ရည်မှန်းချက်မဟုတ်ပါ, တည်ငြိမ်မှုသည်ရည်မှန်းချက်ဖြစ်သည်။ ဤကိရိယာနှစ်ခုကိုကောင်းစွာအသုံးပြုခြင်းသည်သင်၏ PHP database operations များကိုထိန်းချုပ်နိုင်ပြီးတိုင်းတာနိုင်သော,