ဒေတာဘေ့စ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် PHP ကိုအသုံးပြုသောအခါ MySQLI extension သည်အသုံးအများဆုံးဒေတာဘေ့စ်လည်ပတ်မှုတစ်ခုဖြစ်သည်။ MySQLI_RESULT :: $ field_count property ကိုရလဒ်အနေဖြင့်ရလဒ်အနေဖြင့်လယ်ကွင်း (ကော်လံ) ကိုရရှိရန်အသုံးပြုသည်။ သို့သော်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် developer များက mysqli_result :: $ field_count အစီရင်ခံသောအမှားသို့မဟုတ် undefined အခြေအနေကိုကြုံတွေ့ရနိုင်သည်။ ဤဆောင်းပါးသည်ဤပြ problem နာ၏ဘုံအကြောင်းများကိုခွဲခြမ်းစိတ်ဖြာပြီးသက်ဆိုင်ရာဖြေရှင်းနည်းများကိုပေးလိမ့်မည်။
developer များကအောက်ပါတို့နှင့်ဆင်တူသည်အမှားအယွင်းများကိုကြုံတွေ့ရနိုင်သည်။
Fatal error: Uncaught Error: Undefined property: mysqli_result::$field_count in ...
သို့မဟုတ်:
Trying to access array offset on value of type bool
ဤအမှားကညွှန်ပြသည့်အချက်များ အရ field_count property ကိုရယူရန်ကြိုးစားသည့်အခါ MySQLI_RESULT OFF ကိုမှန်ကန်စွာပြန်မရနိုင်ကြောင်းနှင့်အရာဝတ်ထုတစ်ခုပင်မဖြစ်နိုင်ပါ။
SQL query ufferution ပျက်ကွက်သည့်အခါ MySQLI :: မေးမြန်းမှု () နည်းလမ်းသည် mySQLI_RESult Objects အစား မှားယွင်းသောနည်းလမ်းကို ပြန်ပို့သည်။ ရလဒ်တစ်ခုအနေဖြင့်၎င်းကိုသတ်မှတ်ထားသည့်နောက် code ကိုဖော်ပြပါက attribute ကိုကြည့်သောအခါအမှားတစ်ခုဖြစ်ပေါ်လိမ့်မည်။
နမူနာကုဒ်:
$mysqli = new mysqli('localhost', 'root', '', 'test');
$result = $mysqli->query("SELECT * FROM non_existing_table");
echo $result->field_count; // အမှားတစ်ခုသတင်းပို့ပါ:အရာဝတ်ထုတစ်ခုမဟုတ်ပါ
ဖြေရှင်းချက် -
Field_Count ပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုကိုမကြည့်မီ,
if ($result instanceof mysqli_result) {
echo $result->field_count;
} else {
echo "စုံစမ်းမှုမအောင်မြင်ပါ:" . $mysqli->error;
}
ထည့်သွင်းခြင်း , မွမ်းမံခြင်း နှင့် ဖျက်ခြင်း ကဲ့သို့သော SQL ထုတ်ပြန်ချက်များသည်ရလဒ်ကိုပြန်မလာပါ။ ယခုအချိန်တွင် မေးမြန်းမှု () query () ပြန်လည်ထူထောင် ခြင်းနှင့် field_count ကို ရယူခြင်းသည်အမှားတစ်ခုဖြစ်ပေါ်စေလိမ့်မည်။
နမူနာကုဒ်:
$result = $mysqli->query("UPDATE users SET name = 'test' WHERE id = 1");
echo $result->field_count; // အမှားတစ်ခုသတင်းပို့ပါ:အရာဝတ်ထုတစ်ခုမဟုတ်ပါ
ဖြေရှင်းချက် -
MySQLI_RESULT အရာဝတ်ထုများကိုပြန်ပို့သော querts များအတွက် field_count အမျိုးအစားများကိုခွဲခြားသည်။
$result = $mysqli->query("SELECT * FROM users");
if ($result instanceof mysqli_result) {
echo "ကော်လံအရေအတွက်:" . $result->field_count;
} else {
echo "မစုံစမ်းမှုရလဒ်အစုမ,Execution Status:" . ($result ? 'အောင်မြင်ခြင်း' : 'ဆုံးရှုံး');
}
PHP သို့မဟုတ် MySQLI extension ၏အချို့သောဗားရှင်းများသည်မှန်ကန်စွာဖွင့်ထားသည့်အတွက်သက်ဆိုင်ရာဂုဏ်သတ္တိများကိုမရရှိနိုင်ပါ။
ဖြေရှင်းချက် -
PHP နှင့် MySQLI တိုးချဲ့ပညာဗားရှင်းများကိုအတည်ပြုပါ။
phpinfo();
MySQLI extension ကို enable လုပ်ထားပါ။ PHP ဗားရှင်းသည် 7.4 နှင့်အထက်ဖြစ်သည်။
Field_Count သည်ဥပမာတစ်ခုဖြစ်ပြီး static mode ကို အသုံးပြု. မှားယွင်းစွာဝင်ရောက်ခြင်းသည် undefined သို့မဟုတ်အမှားအယွင်းများဖြစ်ပေါ်လိမ့်မည်။
အမှားဥပမာ -
echo mysqli_result::$field_count; // အမှား
မှန်ကန်သောနည်းလမ်း -
echo $result->field_count;
အချို့ဖြစ်ရပ်များတွင် developer များက API မှအချက်အလက်များယူထားသောအချက်အလက်များကဲ့သို့သော MySQLI_RESELT ကဲ့သို့သော MySQLI_RESULE အဖြစ်မှားယွင်းစွာခွဲခြမ်းစိတ်ဖြာနိုင်သည်။
$response = file_get_contents("https://gitbox.net/api/data");
$data = json_decode($response);
echo $data->field_count; // တကယ်တော့မဟုတ်ဘူး mysqli_result ကန့်ကွက်
ဖြေရှင်းချက် -
သင်မှန်ကန်သောအမျိုးအစားအရာဝတ်ထုကိုအသုံးပြုနေကြောင်းသေချာအောင်လုပ်ပါ။
if ($data instanceof mysqli_result) {
echo $data->field_count;
} else {
echo "类型အမှား,ဝင်ရောက်. မရပါ field_count";
}
Code ၏ကြံ့ခိုင်မှုကိုမြှင့်တင်ရန်အတွက်,
function safe_query($mysqli, $sql) {
$result = $mysqli->query($sql);
if ($result instanceof mysqli_result) {
return $result;
} else {
error_log("SQL Error: " . $mysqli->error);
return false;
}
}
// ဘယ်လိုသုံးရမလဲ
$result = safe_query($mysqli, "SELECT * FROM users");
if ($result) {
echo "ကော်လံအရေအတွက်:" . $result->field_count;
}
MySQLI_RESULT :: $ field_count သည်အမှားတစ်ခုဖြစ်သည့်အကြောင်းပြချက်သို့မဟုတ် developer သည်ပြန်လာသောရလဒ်အမျိုးအစား (သို့) အသုံးပြုမှုဝန်းကျင်ကိုမကိုင်တွယ်နိုင်သောကြောင့် undefined သည်မှားယွင်းသောကြောင့်ဖြစ်သည်။ အထက်ပါနည်းလမ်းများမှတစ်ဆင့် developer များသည်ထိုကဲ့သို့သောအမှားအယွင်းများကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီးပိုမိုလုံခြုံစိတ်ချရသော PHP ဒေတာဘေ့စ်စစ်ဆင်ရေးကုဒ်များကိုရေးဆွဲနိုင်သည်။