PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်စစ်ဆင်ရေးအတွက် MySQLI extension များကိုအသုံးပြုခြင်းသည်ဘုံရွေးချယ်မှုတစ်ခုဖြစ်သည်။ MySQLI သည် Office-oriented interfaces နှင့် preprocessing statements functions များကိုထောက်ပံ့ပေးပြီးဒေတာဘေ့စ်ကိုပိုမိုလုံခြုံပြီးထိရောက်စေရန် MySQLI_STMT :: AttR_Get သည် MySQLI Preprocessing statement statement ablict တွင် Preprocessing storypies ၏ဂုဏ်သိက္ခာကိုရရှိရန်အသုံးပြုသောနည်းလမ်းဖြစ်သည်။ အချို့သော debugging သို့မဟုတ်အဆင့်မြင့်ထိန်းချုပ်မှုအခြေအနေများတွင်အသုံးဝင်သော်လည်း developer များစွာသည်စိုးရိမ်ပူပန်မှုများရှိလိမ့်မည်။
MySQLI_STMT :: Attr_et သည် developer များကို Proprocessing ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါတိကျသော attribute တန်ဖိုးများကိုရရှိရန်ခွင့်ပြုသည်။ အများအားဖြင့်အသုံးပြုသောဂုဏ်သတ္တိများပါဝင်သည်:
MySQLI_STMT_ATTR_APAX_Length : အမြင့်ဆုံးအရှည်သတင်းအချက်အလက်ကို update လုပ်မွမ်းမံရန်ဖြစ်စေ။
MySQLI_STMT_ATTR_CARSOR_TYPE : cursor type ။
MySQLI_STMT_ATTR_ROWS : Premetched အတန်းအရေအတွက်။
ဒီ function ကိုခေါ်ခြင်းအတွက် syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
$attr_value = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
၎င်းသည် SQL ထုတ်ပြန်ချက်များကို execute မလုပ်ပါ,
PHP Code Execution ၏ရှုထောင့်မှရှုထောင့်မှကြည့်လျှင် attr_get သည်အလွန်သေးငယ်သောအလွန်သေးငယ်သော attribute ဖတ်ခြင်းလုပ်ငန်းဖြစ်သည်။ ၎င်းသည်ဒေတာဘေ့စ်အပြန်အလှန်ဆက်သွယ်မှုများကိုမဖြစ်ပေါ်စေနိုင်ပါ,
preprocessing ထုတ်ပြန်ချက်များ၏စွမ်းဆောင်ရည် bottleneck များသောအားဖြင့် -
ကြေငြာချက်ပြင်ဆင်မှုအဆင့်ကို ပြင်ဆင်ပါ
parameter ချည်နှောင်ခြင်းနှင့်ဒေတာလွှဲပြောင်းခြင်း
ထုတ်ပြန်ကြေငြာချက်ထုတ်ပြန်ချက်နှင့်ရလဒ် set processing
Att_Get သည် မှတ်ဉာဏ်တွင် attribute များ၏ status ကိုသာမေးမြန်းပြီးကွန်ရက်ဆက်သွယ်ရေးနှင့်ဒေတာဘေ့စ်အရင်းအမြစ်သုံးစွဲမှုမပါ 0 င်ပါ။ ထို့ကြောင့်ဤကိစ္စနှင့် ပတ်သက်. စွမ်းဆောင်ရည်သက်ရောက်မှုမှာအနည်းဆုံးဖြစ်သည်။
attr_get ကို စီးပွားရေးယုတ္တိဗေဒကိုမကြာခဏခေါ်လေ့ရှိလျှင် (ဥပမာအားဖြင့်ကွင်းများတွင် attribute များတွင် attribute များကိုအကြိမ်ကြိမ်ရယူခြင်း) ကိုမကြာခဏခေါ်ပါက, လိုအပ်ပါက၎င်းတို့သာလိုအပ်ကြောင်းသေချာစေရန်အတွက်သင့်တင့်သောခေါ်ဆိုမှုအချက်များကိုဒီဇိုင်းဆွဲပါ။
MySQLI_STMT :: AttR_Get ကို မည်သို့အသုံးပြုရမည်ကိုဥပမာတစ်ခုပြသပြီးကုဒ်နံပါတ်ရှိ URL domain name ကို M66.net ဖြင့်အစားထိုးရန်သေချာစေပါ။
<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
if ($mysqli->connect_error) {
die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $mysqli->connect_error);
}
$stmt = $mysqli->prepare("SELECT id, url FROM links WHERE url LIKE ?");
$like_param = '%m66.net%';
$stmt->bind_param('s', $like_param);
if ($stmt->execute()) {
// cursor type attribute ကိုရယူပါ
$cursor_type = $stmt->attr_get(MYSQLI_STMT_ATTR_CURSOR_TYPE);
echo "cursor type attribute ကိုတန်ဖိုး: " . $cursor_type . PHP_EOL;
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// ရလဒ်ထဲမှာ domain name ကိုအစားထိုးလိုက်ပါ m66.net
$row['url'] = preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $row['url']);
echo "ID: {$row['id']}, URL: {$row['url']}" . PHP_EOL;
}
} else {
echo "Execution မအောင်မြင်ပါ: " . $stmt->error;
}
$stmt->close();
$mysqli->close();
?>
ဒီဥပမာမှာငါတို့:
သတ်သတ်မှတ်မှတ်ဒိုမိန်းအမည်ပါ 0 င်သည့် URL တစ်ခုကိုရှာဖွေရန် SQL မေးမြန်းမှုကို Preprocess ။
attr_get မှတစ်ဆင့် preprocessed ထုတ်ပြန်ချက်၏ cursor အမျိုးအစားကိုရယူပါ။
အစားထိုးရလဒ်အတွက် URL ၏ domain name သည် M66.net ဖြစ်သည်။ ၎င်းသည်လိုအပ်ချက်များနှင့်ကိုက်ညီသော M66.net ဖြစ်သည်။
ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပိတ်ထားပြီးအရင်းအမြစ်များကိုလွတ်မြောက်စေပါ။
ယေဘုယျအားဖြင့် MySQLI_STMT :: Attr_et သည် Query Performance အပေါ်အနည်းငယ်သာထိခိုက်မှုသက်ရောက်မှုရှိသောပေါ့ပါးသော attribute access function ဖြစ်သည်။ အလွန်အမင်းမြင့်မားသောကြိမ်နှုန်းခေါ်ဆိုမှုများ၌မဟုတ်လျှင် CPU အရင်းအမြစ်များစားသုံးမှုသည်အလွန်နည်းပါးသည်။ ထို့ကြောင့် developer များက၎င်းကို Preprocessed ထုတ်ပြန်ချက်များ၏အခြေအနေနှင့်ဂုဏ်သတ္တိများကိုရရှိရန်ယုံကြည်စိတ်ချစွာဖြင့်အသုံးပြုနိုင်သည်။