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

Next_result () ကိုအသုံးပြုသောအခါအရင်းအမြစ်မသက်ဆိုင်မှုကိုရှောင်ရှားရန်အကြံပြုချက် 3 ချက်

gitbox 2025-05-06

PHP တွင် Next_result () သည် MySQLI extensions များတွင်ဘုံနည်းလမ်းတစ်ခုဖြစ်ပြီးများသောအားဖြင့်မေးမြန်းချက်မျိုးစုံကိုအကောင်အထည်ဖော်သောအခါအသုံးပြုလေ့ရှိသည်။ သို့သော် developer များစွာသည် Next_result () ကို အသုံးပြုသောအခါအရင်းအမြစ်များကိုလွှတ်ပေးခြင်းကိုလျစ်လျူရှုပေမည်။ ဤဆောင်းပါးကိုရှောင်ရန်ဤဆောင်းပါးသည် လာမည့် _result () ကို အသုံးပြုသောအခါအရင်းအမြစ်များကိုမှန်ကန်စွာထုတ်လွှတ်ပေးရန်သေချာစေရန်အတွက်ဤဆောင်းပါးသည်လက်တွေ့ကျသောအချက်များ 3 ခုကိုမျှဝေပါမည်။

1 ။ ရလဒ်အားလုံးကိုသန့်ရှင်းရေးလုပ်ပါ

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

နမူနာကုဒ် :

 <?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "username", "password", "database");

// စုံစမ်းမှုများကိုမျိုးစုံလုပ်ဆောင်ပါ
$mysqli->multi_query("SELECT * FROM table1; SELECT * FROM table2;");

// ဖြစ်စဉ်ကိုပထမရလဒ် set ကို
do {
    if ($result = $mysqli->store_result()) {
        // အချက်အလက်များကိုထုတ်ယူခြင်း
        while ($row = $result->fetch_assoc()) {
            echo $row['column_name'];
        }
        // ပထမရလဒ်ကိုပြင်ဆင်ပါ
        $result->free();
    }
    // နောက်ရလဒ်ကိုသွားပါ
} while ($mysqli->next_result());
?>

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

2 ။ အမှားအယွင်းများကိုသတိပြုပါ

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

နမူနာကုဒ် :

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

// မျိုးစုံရှာဖွေမှုထုတ်ပြန်ချက်များ execute
$query = "SELECT * FROM table1; SELECT * FROM table2;";
if ($mysqli->multi_query($query)) {
    do {
        if ($result = $mysqli->store_result()) {
            // အချက်အလက်များကိုထုတ်ယူခြင်း
            while ($row = $result->fetch_assoc()) {
                echo $row['column_name'];
            }
            // ရလဒ်အစုအဝေးကိုသန့်ရှင်းရေး
            $result->free();
        }
    } while ($mysqli->next_result());
} else {
    echo "Error: " . $mysqli->error;
}
?>

ဤဥပမာတွင် Multi_query () သည် execute လုပ်ရန်ပျက်ကွက်ပါက Code သည် unfred for querty များကိုဆက်လက်လုပ်ဆောင်ခြင်းကိုတားဆီးမည့်နောက်ဆက်တွဲမေးမြန်းချက်များကိုဆက်လက်လုပ်ဆောင်မည့်အစားအမှားအယွင်းများကိုထုတ်ပေးသည်။

3 ။ အရောင်းအ 0 ယ်များကို သုံး. query query querity order ကိုအသုံးပြုပါ

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

နမူနာကုဒ် :

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

// ငွေပေးငွေယူတစ်ခုစတင်ပါ
$mysqli->begin_transaction();

try {
    // ပထမ ဦး ဆုံးမေးမြန်းချက်ကို execute
    $mysqli->query("SELECT * FROM table1;");
    
    // ဒုတိယမေးခွန်းကိုလုပ်ဆောင်ပါ
    $mysqli->query("SELECT * FROM table2;");
    
    // တင်သွင်းမှုတင်သွင်း
    $mysqli->commit();
} catch (Exception $e) {
    // အမှားတစ်ခုဖြစ်ပေါ်လျှင်ငွေပေးငွေယူကိုပြန်လှိမ့်လိမ့်မည်
    $mysqli->rollback();
    echo "Failed: " . $e->getMessage();
} finally {
    // အားလုံးရလဒ်အစုံတက်သန့်ရှင်းရေး
    while ($mysqli->more_results()) {
        $mysqli->next_result();
    }
}
?>

ဤဥပမာတွင်ကျွန်ုပ်တို့သည်အရောင်းအ 0 ယ်အမြောက်အများကိုလုပ်ဆောင်ရန်အရောင်းအ 0 ယ်များကိုအသုံးပြုသည်။

အကျဉ်းချုပ်

Next_result () ကို အသုံးပြုသောအခါအရင်းအမြစ်များမဖတ်ရသေးသောပြ problem နာကိုရှောင်ရှားရန်အောက်ပါအချက်များလိုက်နာရန်သေချာအောင်လုပ်ပါ။

  1. စုံစမ်းမှုရလဒ်များတစ်ခုစီပြီးနောက်, free_result () ကိုသယံဇာတဖယ်ရှားရန်ခေါ်ဆိုပါ။

  2. Multi_Query () ကို အသုံးပြု. မေးမြန်းချက်မျိုးစုံကိုအကောင်အထည်ဖော်သောအခါအမှားကိုင်တွယ်ပုံနှင့်ပတ်သက်သောအမှားအယွင်းများကိုသတိထားပါ။

  3. အရောင်းအ 0 ယ်များကိုအသုံးပြုသောအခါ,

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