Developer များသည် PHP ၏ MySQLI_STMM :: AttR_GET function ကိုအသုံးပြုသောအခါရှုပ်ထွေးသောအသိပေးစာသို့မဟုတ်သတိပေးချက်အမှားများကိုတွေ့ရသည်။ အထူးသဖြင့်ဒေတာဘေ့စ်ကိုချိတ်ဆက်ခြင်း (သို့) ကြိုတင်သတ်မှတ်ထားသည့်ထုတ်ပြန်ချက်များကိုချိတ်ဆက်သောအခါထိုကဲ့သို့သောအမှားများသည်အစီအစဉ်၏ပုံမှန်လည်ပတ်မှုကိုအကျိုးသက်ရောက်နိုင်သည်။ ဤဆောင်းပါးသည်ဤအမှားများ၏အကြောင်းရင်းများကိုခွဲခြမ်းစိတ်ဖြာပြီးထိရောက်သောကုသမှုနည်းလမ်းများကိုဖြည့်ဆည်းပေးလိမ့်မည်။
MySQLI_STMT :: AttR_Get သည် MySQLI_STMT အတန်း၏နည်းလမ်းဖြစ်သည်။ ဤနည်းလမ်းကို buffer အရွယ်အစားနှင့် cursor အမျိုးအစားကဲ့သို့သောပြည်တွင်းရေးဂုဏ်သတ္တိများရရှိရန်အသုံးပြုသည်။
Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
mixed mysqli_stmt::attr_get(int $attribute)
$ attribute သည် MySQLI_STMT_ATTR_ATTRT_ATTR_TTR_TTROR_TYOR_TYPE ကဲ့သို့သော attribute type အမျိုးအစားဖြစ်သည်။
အမှန်တကယ်အသုံးပြုမှုတွင်အောက်ပါအမှားများကိုသင်ကြုံတွေ့ရနိုင်သည်။
Notice: Undefined property: mysqli_stmt::$attr_get in ...
Warning: mysqli_stmt::attr_get(): Invalid attribute in ...
ဤအမှားအယွင်းများအများအားဖြင့်အောက်ပါအခြေအနေများတွင်ရှိသည်။
PHP ဗားရှင်းသဟဇာတဖြစ်သောသဟဇာတဖြစ်သော PHP ၏အချို့သောအဟောင်းဗားရှင်းများသည်ဤနည်းလမ်းကိုအကောင်အထည်ဖော်ခြင်းသို့မဟုတ်ထောက်ခံသည့်ဂုဏ်သတ္တိများကိုကန့်သတ်ထားခြင်းမရှိပါ။
မလျော်ကန်သောအသုံးပြုမှု - ဥပမာအားဖြင့်နည်းလမ်းကို attribute တစ်ခုအဖြစ်ခေါ်ပါသို့မဟုတ်မမှန်ကန်သော parameter တန်ဖိုးကိုဖြတ်သန်းပါ။
extension ကိုမှန်ကန်စွာမဖွင့်ပါ ။ MySQLI extension ကို enable မလုပ်နိုင်ပါ။
သင်အသုံးပြုသော PHP ဗားရှင်းသည် function ကိုသင်အသုံးပြုနေကြောင်းသေချာပါစေ။ MySQLI_STMT :: Att_get ကို PHP 8.1.0 တွင်မိတ်ဆက်ခဲ့ပြီးသင်၏ဗားရှင်းသည်ဤဗားရှင်းထက်နိမ့်ပါကအသုံးမပြုပါ။
လက်ရှိ PHP ဗားရှင်းကိုအတည်ပြုနိုင်သည်။ အောက်ပါကုဒ်များမှတဆင့် MySQLI extension ကိုဖွင့်နိုင်သည်။
echo 'PHP Version: ' . phpversion();
echo 'Mysqli loaded: ' . (extension_loaded('mysqli') ? 'Yes' : 'No');
သင်နည်းလမ်းဟုသင်ခေါ်ဆိုသည့်အရာဝတ်ထုသည် MySQLI_STMT ဥပမာတစ်ခုဖြစ်ကြောင်းသေချာပါစေ။ ဥပမာအားဖြင့်:
$mysqli = new mysqli("localhost", "user", "password", "database");
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$ stmt မှား လျှင်၎င်းသည် Preprocessing မအောင်မြင်ဟုဆိုလိုသည်။ သငျသညျပထမ ဦး ဆုံး $ MySQLI-> အမှားကို debug ကိုသုံးသင့်ပါတယ်။
Att_get ကို attribute တစ်ခုအဖြစ်မကြည့်ပါနှင့်။ ဥပမာအားဖြင့်, အောက်ပါအမှားအယွင်းနည်းလမ်းသည်အသိပေးချက်တစ်ခုပစ်လိမ့်မည်။
// အရေးအသားမှား
$value = $stmt->attr_get;
မှန်ကန်သောခေါ်ဆိုမှုနည်းလမ်းမှာအောက်ပါအတိုင်းဖြစ်သည် -
$cursorType = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
တစ်ချိန်တည်းမှာပင်ဝင်လာသော $ attribute parameter သည်ခိုင်လုံသောစဉ်ဆက်မပြတ်ဖြစ်ကြောင်းသေချာအောင်လုပ်ပါ။ အများအားဖြင့်အသုံးပြုသောပါဝင်သည်:
MySQLI_STMT_ATTR_UTTR_APDATE_MAX_Length
MySQLI_STMTT_ATTR_CARSOR_TYPE
MySQLI_STMT_ATTR_REFT_RAWS
သင်၏ကုဒ်သည်ကွဲပြားခြားနားသော PHP ဗားရှင်းများနှင့်လိုက်ဖက်ရန်လိုအပ်ပါကသင်အန္တရာယ်ကင်းစွာခေါ်ဆိုရန် function တည်ရှိမှုတရားစီရင်ခြင်းကိုသင်အသုံးပြုနိုင်သည်။
if (method_exists($stmt, 'attr_get')) {
$value = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
} else {
// အသုံးပြုသူသို့မဟုတ်ကျဆင်းမှုယုတ္တိဗေဒအချက်ပြ
error_log("attr_get နည်းလမ်းကိုလက်ရှိပတ်ဝန်းကျင်တွင်မရရှိနိုင်ပါ。");
}
ဖွံ့ဖြိုးရေးအဆင့်တွင်အမှားအယွင်းများရေးဆွဲခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်မှတ်တမ်းများကိုမှတ်တမ်းများဖွင့်ရန်အကြံပြုသည်။
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', '/var/log/php_errors.log');
error_reporting(E_ALL);
တစ်ချိန်တည်းမှာပင်, သင်၏အတွင်းပိုင်း Debug Page ကိုသင်ကြည့်ရှုနိုင်သည်။
https://m66.net/debug/info
PHP extension များ, ဗားရှင်းများ, 0 န်ဆောင်မှုပေးခြင်းနှင့်အခြားအချက်အလက်များကိုစစ်ဆေးပါ။
MySQLI_STMT :: Attr_et ကို အသုံးပြုခြင်းသည် PHP 8.1 + တွင်တိုးမြှင့်သောစွမ်းဆောင်ရည်တစ်ခုဖြစ်ပြီး, သို့သော်ဗားရှင်းသဟဇာတဖြစ်ခြင်း, ခေါ်ဆိုမှုနည်းစနစ်များနှင့် parameterscers ၏တရားဝင်မှုကိုအာရုံစိုက်ရန်လိုအပ်သည်။ အကယ်. သင်သည်သတိပေးချက်သို့မဟုတ်သတိပေးချက်အမှားများကိုသင်ကြုံတွေ့ရပါကပတ်ဝန်းကျင်ကိုမှန်ကန်စွာပြုပြင်ရန်သေချာစေရန်နှင့် code အသုံးပြုမှုဆိုင်ရာသတ်မှတ်ချက်များကိုသေချာစေရန်အထက်ဖော်ပြပါနည်းလမ်းအရ၎င်းတို့ကိုတစ်ခုစီစစ်ဆေးရန်အကြံပြုသည်။
ဤအသေးစိတ်အချက်အလက်များကိုစနစ်တကျကိုင်တွယ်ခြင်းအားဖြင့် PHP စီမံကိန်းများအားတည်ငြိမ်အေးချမ်းရေးနှင့်လိုက်လျောညီထွေမှုများကိုသိသိသာသာတိုးတက်စေနိုင်သည်။