လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Next_result () နှင့် pdo ကွဲပြားခြားနားမှုနှင့်အခြားနည်းလမ်းများ

Next_result () နှင့် pdo ကွဲပြားခြားနားမှုနှင့်အခြားနည်းလမ်းများ

gitbox 1970-01-01

ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ကိုအသုံးပြုသောအခါ developer များစွာသည်မေးမြန်းချက်မျိုးစုံလုပ်ဆောင်ရန် MySQLI extension ကိုရွေးချယ်ကြသည်။ ဒီဇာတ်လမ်းမှာတော့ နောက်တစ်ခေါက် () နည်းလမ်းဟာအသုံးဝင်မှာပါ။ သို့သော်ဤနည်းလမ်းကိုအသုံးပြုခြင်းတွင်ထင်ရှားသောထောင်ချောက်အချို့ရှိသည်။ ၎င်း၏ကွဲပြားခြားနားမှုများကို PDE နှင့်ပိုမိုနားလည်ခြင်းနှင့်ပိုမိုကောင်းမွန်သောအခြားရွေးချယ်စရာများရှိ, မရှိ, ခိုင်လုံသောအခြားရွေးချယ်စရာများရှိ,

Next_result () ကဘာလဲ။

Next_Result () သည် Myies-query ကို ကိုင်တွယ်ရန် MySQLI extension မှပေးသောနည်းလမ်းဖြစ်သည်။ ၎င်း၏ရည်ရွယ်ချက်မှာ Database client ကိုနောက်ရလဒ်ကိုဆက်လက်ဖတ်ရှုရန်ပြောရန်ဖြစ်သည်။

ပုံမှန်အသုံးပြုမှုမြင်ကွင်းကိုအောက်ပါအတိုင်းဖြစ်သည် -

 $mysqli = new mysqli("localhost", "user", "password", "database");

$query = "CALL complex_procedure(); SELECT * FROM another_table;";
if ($mysqli->multi_query($query)) {
    do {
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            $result->free();
        }
    } while ($mysqli->next_result());
}

ဤဥပမာတွင် Next_Result () ရလဒ်မျိုးစုံအကြားပြောင်းရန်အတွက်တာ 0 န်ရှိသည်။

ငါ Next_result () ကို အသုံးပြုခြင်းကိုဘာကိုအာရုံစိုက်သင့်သလဲ။

အဆင်ပြေပေမယ့် Next_result () ကိုအသုံးပြုခြင်းသည်အချို့သောကြောင့်အချို့ကိုဖုံးကွယ်ထားသည်။

1 ။ အမှားများကိုကိုင်တွယ်ရန်အခက်အခဲ

အကယ်. စုံစမ်းမှုမအောင်မြင်ပါက Next_result () သည် ခြွင်းချက် တစ်ခုသို့မချမိပါက, ထို့အပြင်သင်ယခင်ရလဒ်ကိုမသန့်ရှင်းပါက ( စတိုးနှင့်) နှင့်အခမဲ့ () နှင့် အခမဲ့ () ) နှင့်အခမဲ့ ()), နောက်ဆက်တွဲ () သည် မအောင်မြင်ပါ။

2 ။ သယံဇာတအရင်းအမြစ်ယိုစိမ့်မှုဖြစ်စေရန်လွယ်ကူသည်

အရင်းအမြစ်များကိုဖြန့်ချိရန်ပျက်ကွက်ခြင်းသည်အထူးသဖြင့်တစ်ပြိုင်နက်တည်းတစ်ပြိုင်နက်တည်းပတ်ဝန်းကျင်တွင်မှတ်ဥာဏ်ပြ problems နာများကိုမှန်ကန်စွာဖြစ်စေနိုင်သည်။

3 ။ Code Community တိုးမြှင့်

Multi-study လုပ်ခြင်းနည်းလမ်းအပြောင်းအလဲသည်များသောအားဖြင့်ကြာရှည်စွာတည်ရှိပြီးထိန်းသိမ်းရန်ခက်ခဲသည်။ Debug လုပ်ရန်လည်းခက်ခဲသည်။

ကနှင့် pdo အကြားခြားနားချက်ကဘာလဲ?

PDO သည် Multi-statement query ၏ရလဒ်ပြုပြင်ခြင်းနည်းလမ်းကိုတိုက်ရိုက်မထောက်ပံ့ပါ။ PDO :: Exec () execute () ကို သုံး. ထုတ်ပြန်ချက်များစွာကိုသင်လုပ်ဆောင်နိုင်သော်လည်း MySQLI :: Next_Result () ကဲ့သို့သောရလဒ်မျိုးစုံကိုသင်မကိုင်တွယ်နိုင်ပါ။

ဤတွင်အဓိကကွဲပြားခြားနားမှုအချို့မှာ -

သီးခြားထင်ရှားသော MySQLI ( Next_Result ()) ) ပန်ကေ
Multi-statement query ကိုထောက်ပံ့သည် ဟုတ်ကဲ့ ဟုတ်ကဲ့ (ကန့်သတ်ချက်)
မျိုးစုံရလဒ်အစုံဖြစ်စဉ်ကို ဟုတ်ကဲ့ မဟုတ်
ခြွင်းချက်ကိုင်တွယ်ယန္တရား အားနည်းသော ပိုမိုအားကောင်းသည့် (PoOCOECTICTICD ယူဆချက်မှတဆင့်)
ရိုးရှင်းလွယ်ကူခြင်းနှင့်လုံခြုံရေး နျိမ့် ပိုမိုမြင့်သော
parameter သည်စည်းမျဉ်းပံ့ပိုးမှု ဟုတ်ကဲ့ ဟုတ်ကဲ့

အကယ်. သင်၏လျှောက်လွှာသည်ရလဒ်မျိုးစုံကိုလုပ်ဆောင်ရန်လိုအပ်ပါက MySQLI သည် ပို. ရိုးရှင်းသောရွေးချယ်မှုဖြစ်သည်။ သို့သော်၎င်းကိုရှောင်ရှားနိုင်ပါက PDO ကိုအသုံးပြုခြင်းသည်ပိုမိုကောင်းမွန်သောလုံခြုံရေးနှင့် Code ကိုထိန်းသိမ်းမှုကိုဖြစ်ပေါ်စေလိမ့်မည်။

ပိုကောင်းတဲ့ရွေးချယ်စရာတစ်ခုရှိပါသလား။

? မျိုးစုံကြေငြာချက်အမြောက်အများအစားလွတ်လပ်သောမေးမြန်းချက်မျိုးစုံကိုသုံးပါ

Multi_query () ကို အသုံးပြုခြင်းကိုရှောင်ရှားရန်ကြိုးစားပါ။

 $stmt1 = $pdo->prepare("CALL complex_procedure()");
$stmt1->execute();

$stmt2 = $pdo->prepare("SELECT * FROM another_table");
$stmt2->execute();
$data = $stmt2->fetchAll(PDO::FETCH_ASSOC);

? frameworks (ထိုကဲ့သို့သော Larave, symfony) ကိုသုံးပါ။

ခေတ်သစ် PHP မူဘောင်များသည်ဒေတာဘေ့စ် 0 င်ရောက်ရန်ပိုမိုကြော့ရှင်းသော encapsulation method ကိုပေးသည်။ ဥပမာအားဖြင့် Laravel ၏ eloquent Orm သည် Multi-stire querying ကိုမပံ့ပိုးနိုင်ပါ။

? ရှုပ်ထွေးသောယုတ္တိဗေဒကို Encapsatate လုပ်ရန် intermediate အလွှာများကိုသုံးပါ

အကယ်. ရလဒ်များကိုအမှန်တကယ်လိုအပ်ပါကဈေးနှုန်းကိုသိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းတစ်ခုတွင်ရေးရန်အကြံပြုသည်

အကျဉ်းချုပ်

MySQLI :: Next_Result () သည် ရလဒ်အချည်းနှီးဖြစ်ရန်အတွက်စွမ်းအင်ထုတ်လုပ်မှုကိုပေးသော်လည်း၎င်း၏ရှုပ်ထွေးမှုနှင့်ပြ problems နာများကိုလျစ်လျူရှု။ မရပါ။ စီးပွားရေးဆိုင်ရာယုတ္တိဗေဒတွင်၎င်းကိုတိုက်ရိုက်မှီခိုခြင်းထက်ပိုမိုရှင်းလင်းပါ။ PDO သို့မဟုတ် ORM မူဘောင်ကို သုံး. စုံစမ်းမှုတစ်ခုတည်းကိုအသုံးပြုခြင်းကဲ့သို့သော ပိုမို. ထိန်းသိမ်းထားနိုင်သည့်အခြားရွေးချယ်စရာများ။ Next_Result () ကို တကယ်လိုအပ်မှသာသတိထားသင့်သည်။

?? အကြံပြုချက်များ - အကယ်. သင်သည်ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ဖော်ပြထားသောစုံစမ်းမှုကိုအသုံးပြုပါကသင့်လျော်သောဒေတာဘေ့စ်ခွင့်ပြုချက်များနှင့် parameter များအားဖြည့်ဆည်းပေးနိုင်ပါသလား။

သင်္ကေတဥပမာကိုစမ်းသပ်ရန်သင်၏ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်သို့အထက်ပါကုဒ်များကိုဖြန့်ဝေနိုင်ပါသည်။ ဥပမာ - https://gitbox.net/test-db-script.php