PHP ကို အသုံးပြု. ဒေတာဘေ့စ်နှင့်သက်ဆိုင်သောလုပ်ဆောင်မှုများကိုရေးဆွဲသည့်အခါ MySQLI extension သည် MySQL ဒေတာဘေ့စ်လုပ်ငန်းများကိုကိုင်တွယ်ရန် APIs အပြည့်အဝသတ်မှတ်ထားသည်။ ၎င်းတို့အနက် နောက် function သည် multi-query ရိယာအမျိုးမျိုးတွင်မကြာခဏပေါ်လာလေ့ရှိသည်။ ဤဆောင်းပါးသည် source code ကိုရှုထောင့်မှကြည့်ရှုရန် () နောက်ဆက်တွဲ () ၏အကောင်အထည်ဖော်မှုယန္တရားကိုလေ့လာပြီးအလေ့အကျင့်အပေါ်အခြေခံပြီးထိရောက်သောအသုံးပြုမှုနည်းစနစ်အချို့ကိုအကျဉ်းချုပ်ဖော်ပြလိမ့်မည်။
MySQLI :: Next_Result () သည် MySQLI extension တွင် mySQLI extension တွင်နည်းလမ်းတစ်ခုဖြစ်သည်။ MySQLI :: Multi_query () ကို ခေါ်ပြီးနောက်ဤမြင်ကွင်းကိုပေါ်လာလိမ့်မည်မဟုတ်ပါ။
ဥပမာအားဖြင့်:
$mysqli = new mysqli("localhost", "user", "password", "database");
$sql = "SELECT * FROM users; SELECT * FROM orders;";
if ($mysqli->multi_query($sql)) {
do {
if ($result = $mysqli->store_result()) {
// အပြောင်းအလဲများရလဒ်များ
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
} while ($mysqli->next_result());
}
Next_Result () အထက်ပါအချက်များအတွင်းခံရလဒ်သည်နောက်ရလဒ်ကိုသတ်မှတ်ထားသည်။
PHP source code တွင် Next_result () ၏အကောင်အထည်ဖော်မှုသည် Ext / MySqli / MySqli_nonapi.c နှင့် MySQL C API function ကို MySQL_NEXT_RESELT () နောက်ခံ MySQL C API function တွင်တည်ရှိသည်။
PHP_FUNCTION(mysqli_next_result)
{
MYSQLI_RESOURCE *mysqli_resource;
zval *mysql_link;
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
return;
}
MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
RETVAL_BOOL(!mysql_next_result(mysql));
}
အခြေခံ MySQL_NEXt_RESELT () သည် MySQL server မှလာမည့်ရလဒ်နှင့်ပတ်သက်သောနောက်ရလဒ်ကိုရရှိပြီး၎င်းကို connection object တွင်ထည့်ပါလိမ့်မည်။ ၎င်း၏ပြန်လာတန်ဖိုးမှာ -
0 : အောင်မြင်မှုနှင့်ရလဒ်အစုတခုရှိပါတယ်။
> 0 : အမှားတစ်ခုဖြစ်ပွားခဲ့သည်။
-1 : ရလဒ်မရှိတော့ပါ။
PHP သည် MySQL_RES အမျိုးအစားများအတွက် Cache ကို အသုံးပြုသည်။ MySQL_RES အမျိုးအစားများအတွက် CAFES ကို အသုံးပြုသည်။ ဒီလိုမှမဟုတ်ရင် MySQL server က "စည်းညှိခြင်းမှပညတ်တရားများ, ယခု command ကိုမ run နိုင်ပါ။
လွဲချော်သောရလဒ်များကိုကာကွယ်ခြင်းနှင့်ဆက်သွယ်မှုအခြေအနေတွင်ရှုပ်ထွေးမှုများကိုဖြစ်ပေါ်စေသည်။ ဥပမာအားဖြင့်:
do {
if ($result = $mysqli->store_result()) {
// အပြောင်းအလဲများရလဒ်များ集
$result->free();
}
} while ($mysqli->next_result());
သင်ပထမရလဒ်ကိုသာဂရုစိုက်လျှင်ပင်ဆက်သွယ်မှုကိုဆိုင်းငံ့ထားရန်သေချာစေရန်နောက်ဆက်တွဲရလဒ်များကိုလုပ်ဆောင်ရန် Next_result () ကို သုံးပါ။
while ($mysqli->more_results()) {
$mysqli->next_result();
}
_Result () အမှားတစ်ခုညွှန်ပြရန် မှားယွင်းသော အရာမဟုတ်ပါ, အမှားတစ်ခုရှိမရှိဆုံးဖြတ်ရန် အမှား သို့မဟုတ် errno ကို ပေါင်းစပ်ရန်လိုအပ်သည်။
if (!$mysqli->next_result() && $mysqli->errno) {
// အမှားတစ်ခုရှိတယ်,သစ်ခုတ်
}
Action Multi-statement query ကိုလွှဲပြောင်းပြီးနောက်ရလဒ်အလုံးအရင်းကိုအဆင့်တစ်ခုစီတိုင်းတွင်မှန်ကန်စွာပြုလုပ်ပြီးငွေပေးငွေယူမအောင်မြင်မှုများကိုရှောင်ရှားရန်သေချာစေရန်။
Multi_Query () ကို သုံး. Multi-statements () ကို အသုံးပြု. လုပ်ဖော်ကိုင်ဖက်များသည် SQL ကိုခွဲထုတ်ခြင်းဖြင့် SQL Injection အန္တရာယ်များကိုမိတ်ဆက်ရန်ပိုမိုလွယ်ကူသည်။ parameterization သို့မဟုတ်စိစစ်အတည်ပြု input ကိုသုံးရန်သေချာပါစေ။
MySQLI_ERRORERRORRERRE () အမှားအယွင်းကိုကြည့်ရှုရန်။
MySQL General_log ကိုဖွင့်ခြင်းသို့မဟုတ် Packets ကိုခွဲခြမ်းစိတ်ဖြာရန် packets များကိုဖမ်းယူရန် TCPDump ကဲ့သို့သောကိရိယာများကိုအသုံးပြုပါ။
ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တွင်အသေးစိတ်အမှားအစီရင်ခံစာများကိုအသေးစိတ်ဖော်ပြရန် MySQLI_REPORE () ကို သုံးရန်ကြိုးစားပါ။
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
MySQLI :: Next_Result () သည်ရိုးရှင်းသော interface ခေါ်ဆိုမှုတစ်ခုသာရှိသော်လည်း၎င်းသည်ရှုပ်ထွေးသောဆက်သွယ်ရေးလုပ်ငန်းစဉ်နှင့်ပြည်နယ်စီမံခန့်ခွဲမှုယန္တရားများကိုဖုံးကွယ်ထားသည်။ ၎င်း၏အခြေခံယုတ္တိဗေဒကိုနားလည်ခြင်းသည် Multi-levice set set ကိုပိုမိုထိရောက်စွာကိုင်တွယ်ရန်ကူညီလိမ့်မည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အကောင်းဆုံးအလေ့အကျင့်များအရအရင်းအမြစ်များကိုအပြည့်အဝထုတ်လွှင့်ခြင်းနှင့်အမှားအယွင်းများကိုကိုင်တွယ်ခြင်းဒေတာဘေ့စ်အပြန်အလှန်လုပ်ဆောင်မှုကိုတည်ငြိမ်စေရန်အတွက်သော့ချက်ဖြစ်သည်။
ရှုပ်ထွေးသောစီးပွားရေးယုတ္တိဗေဒနှင့်ပတ်သက်သောနောက်ခံစနစ်များတွင် နောက်ခံအခြေအနေကို ဆင်ခြင်တုံတရားအသုံးပြုခြင်းသည်စွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေရုံသာမကလျှို့ဝှက်ဆက်သွယ်မှုပြည်နယ်ပုံမှန်မဟုတ်သောဖြစ်ရပ်များကိုရှောင်ရှားနိုင်သည်။