လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Multi-statement execute (Multi-statement) တွင် Next_result () ၏အခန်းကဏ် of

Multi-statement execute (Multi-statement) တွင် Next_result () ၏အခန်းကဏ် of

gitbox 2025-05-02

ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ကိုအသုံးပြုသောအခါထိရောက်မှုကိုတိုးတက်စေရန်တစ်ကြိမ်တွင် SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်ရန်တစ်ခါတစ်ရံလိုအပ်သည်။ MySQLI extension သည် Multi-Statement Multi-struntion ကိုထောက်ပံ့ရန်အထောက်အပံ့များကိုထောက်ပံ့ပေးသည်။ ဤဆောင်းပါးသည် နောက်တစ်နေ့တွင် နောက်ထပ်အခန်းကဏ် and နှင့်အသုံးပြုမှုအခြေအနေများကိုအသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။

Multi-statement execution ကဘာလဲ။

Multi-statement execute သည် SQL ထုတ်ပြန်ချက်များကိုဒေတာဘေ့စ်တစ်ခုချင်းစီတွင်ကွပ်မျက်ရန်ခွင့်ပြုသည် ဥပမာအားဖြင့်:

 SELECT * FROM users;
SELECT * FROM orders;

MySQLI :: Multiery () နည်းလမ်းကိုအသုံးပြုခြင်းအားဖြင့်အထက်ဖော်ပြပါမေးမြန်းချက်များကိုတစ်ကြိမ်တွင်ကွပ်မျက်နိုင်သည်။

ငါဘာကြောင့် Next_Result () လိုအပ်တာလဲ။

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

အကယ်. Next_result () ကိုမခေါ်ပါကပထမအကြိမ်ကြေငြာချက်၏ရလဒ်များကိုပြုလုပ်နိုင်ပြီးကျန်ထုတ်ပြန်ချက်များ၏ရလဒ်များကိုလျစ်လျူရှုခြင်းသို့မဟုတ်အမှားတစ်ခုဖြစ်ပေါ်လိမ့်မည်။

အသုံးပြုမှုဥပမာ

Multi_Query () နှင့် Next_result () သုံး. အပြည့်အဝဥပမာတစ်ခုရှိသည်။

 <?php
// ဒေတာဘေ့စ် connection configuration ကို
$host     = 'localhost';
$user     = 'root';
$password = 'password';
$database = 'test_db';

// ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ
$mysqli = new mysqli($host, $user, $password, $database);

// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($mysqli->connect_error) {
    die('ဆက်သွယ်မှုမအောင်မြင်ပါ:' . $mysqli->connect_error);
}

// အပိုင်းများစွာရှိသော SQL အသေအချာပေြာဆိုချက်
$sql = "SELECT * FROM users; SELECT * FROM orders;";

// 执行多အသေအချာပေြာဆိုချက်查询
if ($mysqli->multi_query($sql)) {
    do {
        // လက်ရှိရလဒ် set ကိုသိမ်းထားပါ
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_assoc()) {
                print_r($row);
            }
            // ရလဒ်ကိုလွှတ်ပေးရန်
            $result->free();
        }
        // ပိုမိုရလဒ်များရှိမရှိစစ်ဆေးပါ
    } while ($mysqli->more_results() && $mysqli->next_result());
} else {
    echo "စုံစမ်းမှုမအောင်မြင်ပါ:" . $mysqli->error;
}

// ဆက်သွယ်မှုကိုပိတ်ပါ
$mysqli->close();
?>

code parsing

  1. ဒေတာဘေ့စ် connection တစ်ခုတည်ဆောက်ပါ။
    ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန် MySQLI ကို သုံးပါ။

  2. မျိုးစုံ SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ပါ။
    semicolons နှင့်အတူမျိုးစုံစုံစမ်းမှုထုတ်ပြန်ချက်များကိုခွဲခြား။

  3. Multi-statement query ကို execute လုပ်ပါ။
    ထုတ်ပြန်ချက်များအားလုံးကို execute လုပ်ရန် Multi_query () ကို သုံးပါ။

  4. ရလဒ်အစုအဝေးကိုဖြတ်သန်း:

    • Store_Result () မှတဆင့်လက်ရှိရလဒ်ကိုရယူပါ။

    • FETLE_AST_ASTARE () ကို လိုင်းအားဖြင့် output data line သို့သုံးပါ။

    • Memory ကိုကယ်တင်ရန်လက်ရှိရလဒ်ကိုအခမဲ့ဖြစ်သည်။

    • ရလဒ်အားလုံးလုပ်ငန်းများ၌မရောက်မချင်းလာမည့်ရလဒ်ကိုပြောင်းရန် Next_result () ကို သုံးပါ။

  5. ဒေတာဘေ့စ် connection ကိုပိတ်ပါ။
    သယံဇာတကိုအခမဲ့နှင့်ဆက်သွယ်မှုကိုပိတ်ပါ။

မှတ်သားရန်အရာ

  • MySQLI မှတိုးချဲ့ Object-oriented mode ကို အသုံးပြုရန်သေချာအောင်လုပ်ပါ။

  • SQL ကြေငြာချက်တစ်ခုစီကို Semicolon ( ; ) ဖြင့်ခွဲထားရန်လိုအပ်သည်။ သို့မဟုတ်ပါက syntax အမှားများကိုဖြစ်ပေါ်စေနိုင်သည်။

  • ရလဒ်များပြုပြင်ပြောင်းလဲရေးအတွက် လာမည့် _Result () ကို သုံးရန်သေချာပါစေ။

လက်တွေ့ကျသော application အခြေအနေများ

Next_Result () ကိုအောက်ပါအခြေအနေများတွင်အသုံးပြုသည်။

  • စားပွဲမျိုးစုံမှအချက်အလက်များ၏အသုတ်ရှာဖွေမှု။

  • မျိုးစုံ update ကို execute, အသုတ်တွင်ဖော်ပြချက်များကိုထည့်သွင်းသို့မဟုတ်ဖျက်ပါ။

  • သိမ်းဆည်းထားသောလုပ်ထုံးလုပ်နည်းကိုကွပ်မျက်သည့်အခါမျိုးစုံရလဒ်အစုံပြန်လည်ရောက်ရှိစေသည်။

ဥပမာအားဖြင့်, အသုံးပြုသူသတင်းအချက်အလက်နှင့်အမှာစာအချက်အလက်များကိုအသုတ်များရှာဖွေခြင်းကိုရှာဖွေခြင်းသည်ရလဒ်နှစ်ခုကိုဒေတာဘေ့စ်ဆက်သွယ်မှုတစ်ခုတည်းဖြင့်ရရှိနိုင်ပါသည်။

အကျဉ်းချုပ်

Next_Result () သည် Multi-statement query ကိုကိုင်တွယ်ခြင်း၏မရှိမဖြစ်လိုအပ်သောအစိတ်အပိုင်းတစ်ခုဖြစ်ပြီးရလဒ်အလုံးအရင်းတစ်ခုချင်းစီကိုမှန်ကန်စွာပြုပြင်နိုင်သည်ကိုသေချာစေသည်။ ဆင်ခြင်တုံတရားပေါင်းများစွာ နှင့် နောက်ဆက်တွဲ _result () ကို အသုံးပြု. ဒေတာဗားရှင်းစစ်ဆင်ရေး၏ထိရောက်မှုကိုထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်။