ဒေတာဘေ့စ်ဆက်သွယ်မှုအမှားများသည်နေ့စဉ် PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ခေါင်းကိုက်ခြင်းနှင့်ခေါင်းကိုက်ခြင်းပြ problem နာဖြစ်သည်။ အထူးသဖြင့် MySQLI extensions များကိုအသုံးပြုသောအခါအမှားများသည်မကြာခဏမှုန်ဝါးနေပြီးပြ the နာ၏ရင်းမြစ်ကိုလျင်မြန်စွာရှာဖွေရန်ခက်ခဲသည်။ Debugging ထိရောက်မှုကိုတိုးတက်စေရန် MySQLI :: TRESSQLI_REPORE () သည်အထူးအရေးကြီးသည်။ ဒေတာဘေ့စ်ဆက်သွယ်မှုအမှားများကိုလျင်မြန်စွာဖော်ထုတ်ရန်နှင့်ဖြေရှင်းရန်အတွက်ဤဆောင်းပါးသည်၎င်းတို့၏လုပ်ဆောင်မှုများနှင့်အသုံးပြုမှုကိုနက်နက်နဲနဲမိတ်ဆက်ပေးလိမ့်မည်။
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 ကိုပြင်ဆင်ရန်လှုံ့ဆော်ပေးနိုင်သည်။
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);
}
ဤစာအရေးအသားနည်းလမ်းသည်ကုဒ်ကိုယုတ္တိဗေဒကိုရိုးရှင်းရုံသာမကအမှားအယွင်းများဖြစ်ပေါ်သည့်နေရာကိုလျင်မြန်စွာရှာဖွေရန်, ဖွံ့ဖြိုးရေးအဆင့်တွင်အသုံးပြုရန်အလွန်သင့်တော်သည်။
အမှန်တကယ်စီမံကိန်းများတွင်ဖွံ့ဖြိုးရေးသို့မဟုတ်စမ်းသပ်ခြင်းဆိုင်ရာဝန်းကျင်တွင်တင်းကြပ်သောအမှားအယွင်းများရေးရာယန္တရားတစ်ခု ( 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 ည့်ဂည့်ခံလွှာကိုကိုင်တွယ်ပါ။
MySQLI :: MySQLI_REPORE () ကို အသုံးပြု. PHP Debugging ထိရောက်မှုကိုသိသိသာသာတိုးတက်အောင်လုပ်နိုင်သည်။ Database connection နှင့်ပြ a နာရှိသည့်အခါအမှားများကိုတွေ့နိုင်သည်။ ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တွင်တင်းကျပ်သော mode ( mySqli_report_stress_strict ) ကိုအမြဲတမ်းဖွင့်ရန်အကြံပြုသည်။
Debugging သည်ရည်မှန်းချက်မဟုတ်ပါ, တည်ငြိမ်မှုသည်ရည်မှန်းချက်ဖြစ်သည်။ ဤကိရိယာနှစ်ခုကိုကောင်းစွာအသုံးပြုခြင်းသည်သင်၏ PHP database operations များကိုထိန်းချုပ်နိုင်ပြီးတိုင်းတာနိုင်သော,