တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင် database စွမ်းဆောင်ရည်သည်များသောအားဖြင့် system botleneck ဖြစ်လာသည်။ Backend Development အတွက်အဓိကဘာသာစကားများအနက်မှ PHP သည် MySQL နှင့်အပြန်အလှန်ဆက်သွယ်ရန် MySQLI extension ကိုကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသည်။ ၎င်းတို့အနက် MySQLI_STMT :: Att_Get function သည် ကြိုတင်ပြင်ဆင်ခြင်း သို့မဟုတ် လုပ်ဆောင်ခြင်း မဟုတ်သော်လည်း၎င်းသည်စွမ်းဆောင်ရည်ကိုညှိရန်အထောက်အကူပြုနိုင်သည်။ ဤဆောင်းပါးသည် MySqli_stmmmmmmmmmmm :: Attr_Get_get function ကိုပေါင်းစပ်။ အဆင့်မြင့်ဆိုင်ရာအခြေအနေများတွင်ဒေတာဘေ့စ်၏လုပ်ငန်းများကိုမည်သို့ထိရောက်စွာပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်ပုံကိုအသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။
MySQLI_STMT :: AttR_Get သည် PHP MySQLI extension တွင် Proprocessing Properties ကို Proscessing Properties များရရှိရန်အသုံးပြုသောနည်းလမ်းဖြစ်သည်။ ကြိုတင်ပြင်ဆင်ထားသည့်ကြေညာချက်သည်အလွန်အမင်းကျကျအဘို့အအလွန်အရေးကြီးသည်, ဘာဖြစ်လို့လဲဆိုတော့ SQL injection ကိုရှောင်ရှားခြင်းနှင့်ကွပ်မျက်ခြင်းအစီအစဉ်များကိုလျှော့ချခြင်း,
ဤလုပ်ဆောင်ချက်၏အဓိပ္ပါယ်သည် -
public int|bool mysqli_stmt::attr_get(int $attr)
$ attrie attrie attribier သည်ရရှိသော attribute identifier ကိုရရှိရန်နှင့်လုပ်ဆောင်ချက်သည်သက်ဆိုင်ရာ attribute ၏တန်ဖိုးကိုပြန်ပို့သည်။
အများအားဖြင့်အသုံးပြုသောဂုဏ်သတ္တိများပါဝင်သည်:
MySQLI_STMT_ATTR_AUPDATE_MAX_Length - အမြင့်ဆုံးလယ်ကွင်းအရှည်ကိုအလိုအလျောက်မွမ်းမံရန်လိုသည်
MySQLI_STMT_ATTR_CARSOR_TYPE - cursor type
Preprocessing ထုတ်ပြန်ချက်များအတွက်အခြားအတွင်းပိုင်း settings
ဤဂုဏ်သတ္တိများကိုနားလည်ခြင်းနှင့်ရယူခြင်းသည် developer များပိုမိုတိကျစွာ SQL Execution အပြုအမူကိုပိုမိုတိကျစွာထိန်းချုပ်ရန်နှင့်မလိုအပ်သောစွမ်းဆောင်ရည်စွန့်ပစ်ပစ္စည်းများကိုရှောင်ရှားရန်ကူညီလိမ့်မည်။
မြင့်မားသောတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများအရဒေတာဘေ့စ်ဆက်သွယ်မှုများနှင့်ကြိုတင်မဆိုပြန့်ပွားခြင်းများကို overhead သည်စွမ်းဆောင်ရည်မြှင့်တင်ရေးကိုဖြစ်ပေါ်စေသည်။ attr_get ၏ဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည်အစီအစဉ်ကိုကြေငြာချက်ကိုအပြုအမူအားပြောင်းလဲစေနိုင်သည်သို့မဟုတ်ဆုံးဖြတ်ချက်ချခြင်းများပြုလုပ်နိုင်သည်။
ဥပမာအားဖြင့်:
cursor အမျိုးအစားကိုဆုံးဖြတ်ပါ။ တစ်ချိန်တည်းတွင်ကြီးမားသောဒေတာများကိုတင်ခြင်းကြောင့်မှတ်ဥာဏ်လျှံကိုရှောင်ရှားရန် server-side cursors ကို enable လုပ်ရန်ဆုံးဖြတ်ပါ။
MySQLI_STMT_ATTR_APDATE_MAX_LANG attribute, Field အရှည် cache ကိုပြောင်းလဲခြင်းနှင့်ကွန်ရက်ထုတ်လွှင့်မှုကိုတိုးတက်အောင်လုပ်ပါ။
ကြိုတင်သတ်မှတ်ထားသည့်ထုတ်ပြန်ချက်များကိုပြန်လည်ထုတ်ပြန်ခြင်းတွင်ဖော်ပြချက် attribute များသည် attribute များတသမတ်တည်းနှင့်အမှားများကိုပြန်လည်ချိတ်ဆက်ခြင်းမှတားဆီးရန်သေချာစေပါ။
Cursor Type attribute တွေဘယ်လိုရနိုင်မလဲဆိုတာပြတဲ့ရိုးရှင်းတဲ့ဥပမာတစ်ခုပါ။
$mysqli = new mysqli("m66.net", "user", "password", "database");
if ($mysqli->connect_errno) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT id, name FROM users WHERE status = ?");
$status = 1;
$stmt->bind_param("i", $status);
$stmt->execute();
// cursor type attribute ကိုရယူပါ
$cursorType = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
if ($cursorType === MYSQLI_CURSOR_TYPE_READ_ONLY) {
// ဆာဗာ - ဘက် cursor,တ ဦး တည်းအားဖြင့်တ ဦး တည်းဆွဲနိုင်ပါတယ်,ကြီးမားသောရလဒ်အစုံများအတွက်သင့်လျော်သော
$stmt->store_result(); // Store ရလဒ်အစုံ,အကြိမ်ပေါင်းများစွာဝင်ရောက်ရန်လွယ်ကူသည်
while ($stmt->fetch()) {
// အချက်အလက်များကိုထုတ်ယူခြင်း
}
} else {
// သာမန် cursor,သေးငယ်တဲ့ရလဒ်အစုံများအတွက်သင့်လျော်သော,အားလုံးအပြောင်းအလဲနဲ့ပြီးနောက်ဆွဲထုတ်
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// အချက်အလက်များကိုထုတ်ယူခြင်း
}
}
$stmt->close();
$mysqli->close();
Preprocessing ထုတ်ပြန်ချက်များ၏ဂုဏ်သတ္တိများကိုဖတ်ရှုခြင်းအားဖြင့်ဤအစီအစဉ်သည်ဒေတာကြီးများကိုတစ်ချိန်တည်းတင်ခြင်းကြောင့်မှတ်ဥာဏ်ဖိအားကိုရှောင်ရှားရန် cursor အပြုအမူကိုပုံမှန်ဆုံးဖြတ်နိုင်သည်။
Preprocessing striviesxing : ကြေညာချက်ဂုဏ်သတ္တိများကိုစစ်ဆေးခြင်းအားဖြင့်ထပ်ခါတလဲလဲပြင်ဆင်ခြင်းလုပ်ငန်းများကိုကြိုတင်ပြင်ဆင်ခြင်းနှင့်ဒေတာဘေ့စ်ခွဲခြမ်းစိတ်ဖြာခြင်းကိုရှောင်ရှားခြင်း။
cursor အမျိုးအစားများကိုသင့်လျော်စွာသတ်မှတ်ပါ - ဆာဗာဘေးထွက် cursors များသည်ကြီးမားသောရလဒ်များအတွက်သင့်တော်သော်လည်းဆက်သွယ်မှုဝန်ထုပ်ဝန်ပိုးများကိုတိုးစေသည်။ client-side cursors များသည်အသေးစားဒေတာပမာဏအတွက်သင့်တော်သည်။
အလိုအလျောက် update အမြင့်ဆုံးအရှည် attribute ကိုဖွင့်ပါ ။
Batch Execution နှင့် Shard query : attribute တရားစီရင်ခြင်း,
MySQLI_STMT :: Attr_get သည် concurrencencency ဖြစ်ရပ်များတွင် attribrencess attribute များအရအသုံးချခြင်း, အရင်းအမြစ်များစွန့်ပစ်ပစ္စည်းများကိုထိရောက်စွာပိုမိုကောင်းမွန်အောင်ပြုလုပ်နိုင်သည်။
အထူးသဖြင့်ရှုပ်ထွေးသောစီးပွားရေးစနစ်များ၌ cursor အမျိုးအစားနှင့်အများဆုံးအရှည်ကဲ့သို့သောဂုဏ်သတ္တိများကိုစောင့်ကြည့်ခြင်းနှင့်ချိန်ညှိခြင်းနှင့်ချိန်ညှိခြင်းများကိုစောင့်ကြည့်ခြင်းနှင့်ချိန်ညှိခြင်းများကိုရှောင်ကြဉ်ရန်ခက်ခဲသောစွမ်းဆောင်ရည်အန္တရာယ်များကိုရှောင်ရှားနိုင်သည်။
PHP နှင့် MySQL တို့၏အပြန်အလှန်အကျိုးသက်ရောက်မှုကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်လိုသော developer များအတွက် MySQLI_STMT :: Attr_et သည်အာရုံစူးစိုက်ထိုက်သောကိရိယာများအနက်မှတစ်ခုဖြစ်သည်။