MySQL databases များကို php ကိုအသုံးပြုသောအခါ developer များသည် MySQLI extensions များကိုအထူးသဖြင့်သိမ်းဆည်းထားသောမေးမြန်းချက်များကိုကိုင်တွယ်ဖြေရှင်းရန်အတွက် MySQLI extension များကိုသုံးနိုင်သည်။ ဤလုပ်ဆောင်မှုသည်ရလဒ်မျိုးစုံ (ဥပမာ - ရွေးချယ် ထားသောလုပ်ထုံးလုပ်နည်းများကိုထုတ်ယူခြင်းကဲ့သို့သောရလဒ်များ) တွင်ရလဒ်များစွာတွင်ရလဒ်များစွာဖြင့်ပြန်လည်ပြုပြင်ခြင်းအတွက်အသုံးပြုသည် ။
သို့သော် လာမည့် _result () ကို ရလဒ်အစုအဝေးမရှိဘဲခေါ်ဆိုခြင်းသည်အန္တရာယ်များသည်။
သငျသညျအောက်ပါကဲ့သို့သော SQL execute အခါ -
CALL get_user_and_orders(1);
ဤသိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းသည်ရလဒ်နှစ်ခုကိုပြန်ပို့နိုင်သည်။
ပထမ ဦး ဆုံးအသုံးပြုသူသတင်းအချက်အလက်ဖြစ်ပါတယ်,
ဒုတိယကတော့သုံးစွဲသူရဲ့အမိန့်သတင်းအချက်အလက်ဖြစ်တယ်။
ဤရလဒ်နှစ်ခုကိုမှန်ကန်စွာရရန်ဤအရာကိုသင်ကိုင်တွယ်ရန်လိုအပ်သည်။
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->multi_query("CALL get_user_and_orders(1)")) {
do {
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
} while ($mysqli->next_result());
}
ဒီနေရာမှာ Next_result () က အဓိပ္ပာယ်ရှိတယ် - နောက်ရလဒ်ကိုဖတ်ဖို့ကြိုးစားလိမ့်မယ်။
အကယ်. သင်သည် SQL သည်သင်ကွပ်မျက်ခံရသည့်ရလဒ်များကိုရိုးရိုးရှင်းရှင်းရှာဖွေမှုကဲ့သို့သောရလဒ်မျိုးစုံကိုမပြန်ပါ။
$mysqli->multi_query("SELECT * FROM users WHERE id = 1");
ယခုအချိန်တွင်သင်သည် Next_Result () ဟုခေါ်ပါ။
$mysqli->next_result();
၎င်းသည်အောက်ပါအန္တရာယ်များကိုဖြစ်ပေါ်စေသည်။
Next_result () သူ့ဟာသူကအမှားတစ်ခု (ဒါ မှားယွင်းမှု ပြန်ပို့ခြင်း) ကိုတိုက်ရိုက်အစီရင်ခံခြင်းမဟုတ်ဘဲ, အကယ် . သင်သည်မှန်ကန်သောရလဒ်ကိုမသုံးပါကမှန်ကန်စွာမစားပါနှင့် ။
MySQLI ၏ဆက်သွယ်မှုသည်မမှန်ကန်ကြောင်းအခြေအနေတွင်ရှိသည်။
အကယ်. သင်သည်လက်ရှိရလဒ်ကိုအတိအလင်းလုပ်ဆောင်ခြင်းမပြုပါက Next_result သို့တိုက်ရိုက်သွားပါက MySQL server သည်သင်ယခင်ရလဒ်ကိုမဖတ်သေးကြောင်းနှင့်အရင်းအမြစ်များ ယိုစိမ့်မှုများကိုအလွယ်တကူချိတ်ဆက် နိုင်သည့်အရင်းအမြစ်များသို့မဟုတ်သုတ်သင်ခြင်းများကိုဆက်လက်ထိန်းသိမ်းထားလိမ့်မည်ဟုယုံကြည်သည်။
အနတ်တ နောက်ဆက်တွဲ _result () သည်ရလဒ်မျိုးစုံရှိရန်မျှော် လင့် ထားသည့်အတိုင်းကုဒ်ကြည့်ရှုနိုင်သည် ။
Next_Result () ကို သာသုံးပါ။
multi_query () ကိုသုံးပါသို့မဟုတ်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများကို execute လုပ်ပါ။
သင်၏ SQL သည်ရလဒ်မျိုးစုံကိုပြန်ပို့သည်ဟုအတည်ပြုပါ။
ယခင်ရလဒ်အစုကို Next_result () ကိုခေါ်ခြင်းမပြုမီစားသုံးသည်။
အောက်ပါယုတ္တိဗေဒကိုသင် encapsate လုပ်နိုင်သည်။
if ($mysqli->multi_query($sql)) {
do {
if ($result = $mysqli->store_result()) {
// လက်ရှိရလဒ် set ကိုဖြစ်စဉ်
$result->free();
}
} while ($mysqli->more_results() && $mysqli->next_result());
}
ဤအရေးအသားသည်ပိုမိုလုံခြုံသောရလဒ်များပိုမိုများပြားသောရလဒ်များရှိပါကသာ Veget_result () ကို သာဟုခေါ်သည်။
ရလဒ်အစုအဝေးများမရှိရင် Next_result () ကိုခေါ်ခြင်း () အစုအမျိုးမျိုးမပါဘဲအရင်းအမြစ်များကိုမသက်ဆိုင်ပါ။ သင်၏ရှာဖွေခြင်းဖွဲ့စည်းပုံကိုသေချာစွာနားလည်ရန်သေချာပါစေ,
တိုတိုတွင် Next_result () သည် Multi-variation sets များနှင့်ဆက်ဆံရာတွင်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သော်လည်း "၎င်းကို အသုံးပြု. " ၎င်းကိုပိုမိုအသုံးပြုခြင်းထက် ပို. အရေးကြီးသည်။