လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP ကို ​​Next_result () function ကိုအဘယ်ကြောင့်အဘယ်ကြောင့်အဘယ်ကြောင့် function ကိုပြန်ယူ

PHP ကို ​​Next_result () function ကိုအဘယ်ကြောင့်အဘယ်ကြောင့်အဘယ်ကြောင့် function ကိုပြန်ယူ

gitbox 2025-04-29

ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ၏ MySQLI Extension ကိုအသုံးပြုသောအခါ နောက် function သည်ရလဒ်အစုအမျိုးမျိုးပါ 0 င်သည့်ရှာဖွေမှုများကိုပြုလုပ်ရန် (ဥပမာ, multi_query) ဟုခေါ်သည်။ သို့သော် developer များကတစ်ခါတစ်ရံလုပ်ဆောင်မှုသည် မှားယွင်းသောအရာ ဖြစ်လာသည်, ၎င်းသည်နောက်ဆက်တွဲရလဒ်ကိုမရရှိနိုင်သောရလဒ်ဖြစ်စေနိုင်သည်။ ဒါကြောင့် နောက်တစ်ခါလာမယ့် အကြောင်းရင်းတွေကဘာဖြစ်လို့ မှားယွင်းတဲ့ အကြောင်းပြချက်လဲ။ ဘယ်လိုဖြေရှင်းမလဲ

ဤဆောင်းပါးသည်ဤပြ issue နာကိုအသေးစိတ်ခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။

1 ။ Next_result () ကဘာလဲ။

MySQLI :: Next_Result () သည် 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());
} else {
    echo "Query Error: " . $mysqli->error;
}

2 ။ အဘယ်ကြောင့် လာမည့် _result () မှားယွင်းသောပြန်လာသောအဘယျသို့တူညီသောအကြောင်းပြချက်

1 ။ နောက်တဖန်ရလဒ်အစုံ

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

ဖြေရှင်းချက် - ကျိုးကြောင်းဆီလျော်စွာစက်ဝန်းဝေါဟာရများအခြေအနေကိုသာထိန်းချုပ်ရုံမျှသာမရှိပါ။

2 ။ အမှားတစ်ခုသည်ယခင်စုံစမ်းမှုတွင်ဖြစ်ပွားခဲ့သည်

multi_query () မှကွပ်မျက်ခံရသော SQL ထုတ်ပြန်ချက်များအနက်မှတစ်ခုမှာမအောင်မြင်ပါက နောက်တစ်ခါ မအောင်မြင် ပါ

ဥပမာ -

 $sql = "SELECT * FROM valid_table; SELECT * FROM invalid_table;";
if ($mysqli->multi_query($sql)) {
    do {
        if ($result = $mysqli->store_result()) {
            // အပြောင်းအလဲများရလဒ်များ
            $result->free();
        } else {
            if ($mysqli->errno) {
                echo "Error: " . $mysqli->error;
                break;
            }
        }
    } while ($mysqli->next_result());
}

3 ။ အရင်ရလဒ်ကိုသန့်ရှင်းရေးလုပ်ဖို့မေ့နေတယ်

ယခင်ရလဒ်ကို မှန်ကန်စွာ ဖြ န့ ်ချိခြင်းမပြုပါက,

အကြံပြုချက် - ဒေါ်လာရလဒ် - အခမဲ့ () သို့မဟုတ် $ mysqli-> Store_result () ကို သင်ရလဒ်မလုပ်ဆောင်လျှင်ပင်အမြဲတမ်းခေါ်ပါ။

4 ။ SQL ထုတ်ပြန်ချက်များအကြား syntax အမှားများသို့မဟုတ်တရားမဝင်ထုတ်ပြန်ချက်များရှိသည်

Multi_Query () သည် ထုတ်ပြန်ချက်များစွာကိုထောက်ပံ့သော်လည်းအမျိုးအစားအားလုံး၏ပေါင်းစပ်မှုပေါင်းစပ်မှုကိုမထောက်ခံပါ။ ဥပမာအားဖြင့် DDL ထုတ်ပြန်ချက်များကိုတင်းကျပ်သော mode တွင် (ထိုကဲ့သို့သော ဖန်တီးမှုလုပ်ထုံးလုပ်နည်း ) ကိုကန့်သတ်ထားနိုင်သည်။

အကြံပြုချက် - ဖော်ပြချက်များအားလုံးသည်တရားဝင်ဖြစ်ကြောင်းသေချာပါစေ။ လိုအပ်ပါက MySQLI-> အမှားကို အသုံးပြုပါ။

3 ။ ပြ troubl နာဖြေရှင်းခြင်းနှင့် subjing ကျွမ်းကျင်မှု

  1. အမှားအားလုံးကို romirt ကို enable လုပ်ရန် error_reporting (e_All) ကို သုံးပါ။

  2. $ MySQLI-> ERRNO နှင့် ERRNO နှင့် MYSQLI-> အမှားအယွင်းများအတွက်အမှားအယွင်းများအတွက်အမှားအယွင်းများကို စစ်ဆေးပါ။

  3. Logging: လာမယ့် troubleshooting အတွက် log to log _Result Value နှင့်အမှား output ကိုရေးပါ။

  4. ရလဒ်အ စု တခုရှိမရှိ,

 if ($mysqli->more_results()) {
    $mysqli->next_result();
}

IV ။ ဥပမာတစ်ခုအပြည့်အစုံ

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

$sql = "SELECT * FROM users; SELECT * FROM orders WHERE order_date > '2024-01-01'";
if ($mysqli->multi_query($sql)) {
    do {
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_assoc()) {
                echo "အချက်များ: " . implode(", ", $row) . "<br>";
            }
            $result->free();
        } else {
            if ($mysqli->errno) {
                echo "အမှား: " . $mysqli->error . "<br>";
            }
        }
    } while ($mysqli->more_results() && $mysqli->next_result());
} else {
    echo "ကန ဦး စုံစမ်းမှုမအောင်မြင်ပါ:" . $mysqli->error;
}

5 ။ ရည်ညွှန်း link