$ Connect_Error Property သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုများအတွက် PHP ၏ MySQLI extensions ကိုအသုံးပြုသောအခါအရေးကြီးသော debugging tool တစ်ခုဖြစ်သည်။ ဒေတာဘေ့စဘက်သို့ဆက်သွယ်မှုမအောင်မြင်သောအခါ၎င်းသည်အမှားအယွင်းတစ်ခုသို့ပြန်ပို့သင့်သည်။ သို့သော် developer များစွာသည်ဒေတာဘေ့စ်ဆက်သွယ်မှုပြ problems နာများကို debing လုပ်သည့်အခါ MySQLI :: $ connect_ERROR တစ်ခုကတစ်ခုပြန်ပို့သည်။ ၎င်းသည်ရှုပ်ထွေးနေပြီးပြ the နာ၏လျင်မြန်သောနေရာချထားမှုကိုအထောက်အကူမပြုပါ။ ဤဆောင်းပါးသည်ဤဖြစ်စဉ်ကိုဖြစ်ပေါ်စေပြီးသက်ဆိုင်ရာဖြေရှင်းနည်းများကိုပေးနိုင်သည့်အကြောင်းရင်းများကိုဤဆောင်းပါးသည်အသေးစိတ်လေ့လာလိမ့်မည်။
MySQL ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်အခြေခံနည်းလမ်းမှာ PHP တွင် Ortect-oriented method ကို အသုံးပြု. အောက်ပါအတိုင်းဖြစ်သည် -
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
ပုံမှန်အားဖြင့်ဆက်သွယ်မှုမအောင်မြင်ပါက $ Connect_Error တွင် အမှားအယွင်းဖော်ပြသည့် string တစ်ခုပါ 0 င်သင့်သည်။ သို့သော်တစ်ခါတစ်ရံတွင်၎င်းသည်အချည်းနှီးသော string ကိုပြန်ပို့သည်။
PHP ၏ပုံမှန်အမှားအယွင်းများသည် PHP မှသတိပေးချက်များသို့မဟုတ်သတိပေးချက်များအချို့ကိုပိတ်ဆို့ခြင်း,
ဖြေရှင်းချက် -
ဇာတ်ညွှန်း၏ထိပ်တွင်အမှားအယွင်းများကိုဖွင့်ရန်သေချာအောင်လုပ်ပါ။
error_reporting(E_ALL);
ini_set('display_errors', 1);
ဤအရာသည်သင့်အားဆက်သွယ်မှုပျက်ကွက်သည့်အခါ MySQLI ကို ပြန်လည်ပေးအပ်ရန်အတွက်အဓိပ္ပါယ်ရှိသောအမှားအယွင်းများကိုပြန်လည်ပေးအပ်ခြင်းသည်အဓိပ္ပာယ်ပြည့်ဝသောအမှားအယွင်းများပြန်ပို့ခြင်းများကိုပိုမိုရှင်းလင်းစွာထုတ်ဖော်ပြောဆိုနိုင်သည့်အမှားအချက်အလက်များကိုပိုမိုရှင်းလင်းစွာဖော်ပြခြင်းသတင်းအချက်အလက်များကိုပိုမိုရှင်းလင်းစွာဖော်ပြနိုင်သည့်အချက်အလက်များကိုပိုမိုရှင်းလင်းစွာဖော်ပြပါ။
PHP သည် MySQLI တိုးချဲ့မှုကိုမှန်ကန်စွာမတင်ပါက MySQLI (... ) သည် ဆက်သွယ်မှုလည်ပတ်မှုကိုအမှန်တကယ်လုပ်ဆောင်ခြင်းမဟုတ်ဘဲအမှားအယွင်းမရှိပါ။
Troubleshooting နည်းလမ်း:
phpinfo();
သို့မဟုတ် run:
<?php
if (!extension_loaded('mysqli')) {
die("mysqli extension ကိုဖွင့်မရပါ");
}
?>
မဖွင့်ပါက php.ini တွင်ထည့်နိုင်သည်သို့မဟုတ်မပေါင်းသင်းနိုင်ပါ။
extension=mysqli
ဆာဗာကိုပြန်ဖွင့်ပြီးထပ်မံစစ်ဆေးပါ။
မည်သည့် parameters များမဆိုဖြတ်သန်းခြင်းမရှိဘဲ MySQLI () ကို သင်ခေါ်ဆိုသည့်အခါ -
$mysqli = new mysqli();
၎င်းသည်အမှားတစ်ခုမချထားပါ, သို့သော်အချည်းနှီးသောဆက်သွယ်မှုအရာ ဝတ်ထု ကိုပြန်ပို့သည်။
WomeRoundround: မှန်ကန်သော parameters တွေကိုသေချာအောင်သေချာအောင်လုပ်ပါ။
အချို့သော configuration အမှားများ (မအောင်မြင်သော hostname resolution resolution) ကဲ့သို့သော connect_Error ကို အမှားတစ်ခုသို့ချက်ချင်းပြန်ပို့ရန်ချက်ချင်းမဖြစ်စေနိုင်သော်လည်း Connect_ERRNO ကို စစ်ဆေးရန်လိုအပ်သည်။ အမှားတစ်ခုရှိမရှိဆုံးဖြတ်ရန်လိုအပ်သည်။
$mysqli = new mysqli("wronghost", "user", "pass", "db");
if ($mysqli->connect_errno) {
echo "ဆက်သွယ်မှုအမှားကုဒ်: " . $mysqli->connect_errno;
echo "အမှားသတင်းစကား: " . $mysqli->connect_error;
}
ပြင်းထန်သောဖြစ်ရပ်များတွင် Connect_Error သည်အချည်းနှီးဖြစ်သော်လည်း Connect_errno သည် 0 မဟုတ်ပါ။ ၎င်းသည်အရန်ဆုံးဖြတ်ချက်တစ်ခုအဖြစ်အသုံးပြုနိုင်သည်။
တစ်ခါတစ်ရံတွင်ဇာတ်ကောင်အစုံသို့မဟုတ် Socket setting အမှားများသည်လည်းဆက်သွယ်မှုပြတ်တောက်မှုဖြစ်စေနိုင်သည်။ သို့သော်မည်သည့်အမှားသတင်းကိုမျှမပြန်ပါ။
ဥပမာ -
$mysqli = new mysqli("localhost", "user", "pass", "db", null, "/wrong/socket");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
ဆက်သွယ်မှုချိန်ညှိချက်များနှင့်ပြ problems နာများကိုဖြေရှင်းရန်အကြံပြုသည်။
mysqli_report(MYSQLI_REPORT_ALL);
ဤချိန်ညှိခြင်းက MySQLI ကိုခြွင်းချက်များပစ်ချရန်တွန်းအားပေးခြင်း, အမှား၏အရင်းအမြစ်ကိုပိုမိုရှင်းလင်းစွာမြင်နိုင်ရန်ကူညီသည်။
PHP 8 မှစတင်. MySQLI သည် ပုံမှန်အားဖြင့်ခြွင်းချက် mode ကိုဖွင့်ပေးသည်။ သင် PHP ဗားရှင်းအဟောင်းကိုအသုံးပြုနေပါက၎င်းကိုသင်ကိုယ်တိုင် enable လုပ်နိုင်သည်။
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Try-Catch နှင့်သုံးပါ။
try {
$mysqli = new mysqli("localhost", "user", "pass", "db");
} catch (mysqli_sql_exception $e) {
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $e->getMessage();
}
debugging လုပ်နေစဉ်အတွင်း $ connect_Error သည်မှန်ကန်မှုရှိမရှိစစ်ဆေးရန်အတွက်မှားယွင်းသောဆက်သွယ်မှုဆိုင်ရာ parameters များကိုတမင်တကာ အသုံးပြု. မှားယွင်းသောဆက်သွယ်မှုဆိုင်ရာသတ်မှတ်ချက်များကိုတမင်တကာအသုံးပြုရန်ကြိုးစားနိုင်သည်။
$mysqli = new mysqli("gitbox.net", "wronguser", "wrongpass", "testdb");
if ($mysqli->connect_error) {
echo "ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error;
} else {
echo "အောင်မြင်စွာဆက်သွယ်မှု";
}
အချည်းနှီးသော string ကိုပြန်ရောက်နေဆဲဖြစ်ပါကပြ problem နာသည် PHP ပတ်ဝန်းကျင်သို့မဟုတ်တိုးချဲ့ခြင်းတွင်ဖြစ်နိုင်သည်။