လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PHP တွင်လာမည့် function ကို အသုံးပြု. ရလဒ်မျိုးစုံကို ဖြတ်. အချက်အလက်များကိုမည်သို့ဖြတ်သန်းနိုင်မည်နည်း။

PHP တွင်လာမည့် function ကို အသုံးပြု. ရလဒ်မျိုးစုံကို ဖြတ်. အချက်အလက်များကိုမည်သို့ဖြတ်သန်းနိုင်မည်နည်း။

gitbox 2025-05-02

ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP နှင့် MySQLI ကိုအသုံးပြုသောအခါကျွန်ုပ်တို့သည်များသောအားဖြင့်တစ်ကြိမ်လျှင်စုံစမ်းမှုတစ်ခုသာလုပ်ဆောင်သည်။ သို့သော်အချို့သောရှုပ်ထွေးသောစီးပွားရေးလုပ်ငန်းများတွင်မေးမြန်းချက်တစ်ခုမှတစ်ခုချင်းစီကိုတောင်းဆိုမှုဖြင့်ကွပ်မျက်ရန်လိုအပ်နိုင်ပါသည်။ PHP ၏ MySQLI extension သည်ဤရလဒ်ကိုဖြတ်သန်းရန်အတွက် လာမည့် rourresult () function ကိုပေးသည်။

1 ။ အဘယ်ကြောင့်ရလဒ်မျိုးစုံရှိသနည်း

ဥပမာအားဖြင့်ထုတ်ပြန်ချက်များစွာပါ 0 င်သော SQL Queries များပါ 0 င်သည့်အခါရလဒ်မျိုးစုံကိုများသောအားဖြင့်ဖြစ်ပေါ်လေ့ရှိသည်။

 SELECT * FROM users; SELECT * FROM orders;

SQL ကိုသိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများ (သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများ) သို့မဟုတ်အသုတ်များတွင်ကွပ်မျက်ခံရသည့်အခါ၎င်းသည်ဘုံဖြစ်သည်။ MySQLI_Multi_Query () PHP တွင်ဤအသုတ်ကွပ်မျက်မှုပုံစံကိုထောက်ပံ့သည်။

2 ။ အခြေခံဖြစ်စဉ်ကို

MySQLI_Multi_Query () နှင့် နောက်လာမည့် _resulult () နောက်ဆက်တွဲ (နောက်ဆက်တွဲ) ကို PHP တွင်ပြုလုပ်ရန်အခြေခံအဆင့်များမှာအောက်ပါအတိုင်းဖြစ်သည် -

  1. ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ

  2. Multi-statement query ကိုလုပ်ဆောင်ရန် MySQLI_Multi_Query () ကိုသုံးပါ

  3. လက်ရှိရလဒ်ကိုရရှိရန် Store_Result () ကို သုံးပါ

  4. နောက်ရလဒ်ကိုပြောင်းရန် Next_result () ကို သုံးပါ

3 ။ နမူနာကုဒ်ကိုဖြည့်ပါ

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

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

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

$sql = "SELECT id, username FROM users; SELECT id, order_date FROM orders;";
if ($mysqli->multi_query($sql)) {
    do {
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_assoc()) {
                echo "<pre>";
                print_r($row);
                echo "</pre>";
            }
            $result->free();
        }

        // ပိုမိုရလဒ်များရှိမရှိစစ်ဆေးပါ
        if ($mysqli->more_results()) {
            echo "<hr>နောက်ရလဒ် set:<br>";
        }
    } while ($mysqli->next_result());
} else {
    echo "စုံစမ်းမှုကွပ်မျက်မှုမအောင်မြင်ပါ: " . $mysqli->error;
}

$mysqli->close();
?>

4 ။ မှတ်စုများ

  1. SQL ထုတ်ပြန်ချက်များကို Semicolons ဖြင့်ခွဲထားကြောင်းသေချာပါစေMulti_Query () အတွက်လိုအပ်သည်။

  2. ရလဒ်အနေဖြင့်ရလဒ်အလုံးအရင်းကို စတိုးဆိုင် () () နှင့်အရင်းအမြစ်များကိုအချိန်မီဖြန့်ချိရမည်ဖြစ်သည်

  3. Next_result () သည် ဒေတာများကိုမပြန်ပါ။ ၎င်း၏ function သည်နောက်ရလဒ်ကိုထုတ်ယူရန် Store_result () ကို ဖွင့်ရန်ဖြစ်သည်

  4. Debugging လုပ်နေစဉ်မှာ MySQLI-> အမှားကို ကြည့်ရှုရန်အမှားအယွင်းများကိုကြည့်ရှုရန်သင်ပုံနှိပ်နိုင်သည်

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

  • စားပွဲမျိုးစုံမှ Batches မှဒေတာများကိုဖတ်ပြီးစာမျက်နှာတစ်ခုတည်းတွင်ပြပါ

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

  • ရှုပ်ထွေးသောစာရင်းအင်းခွဲခြမ်းစိတ်ဖြာမှု sql မေးမြန်းချက်များကိုဖျော်ဖြေတဲ့အခါ

6 ။ လုံခြုံရေးအကြံပြုချက်များ

ကြေငြာချက်ဆိုင်ရာစုံစမ်းမှုများကိုအကောင်အထည်ဖော်သည့်အခါ SQL Injection အန္တရာယ်များကိုအာရုံစိုက်ရန်သေချာပါစေ။ ပြင်ဆင်ခြင်း နှင့် bind_param နည်းလမ်းများအသုံးပြုခြင်းသည်ပိုမိုလုံခြုံသောချဉ်းကပ်နည်းဖြစ်သည်။ သို့သော် Multi_query () သည် ပြင်ဆင်ခြင်းကို မပံ့ပိုးနိုင်သော်လည်း၎င်းသည်ယုတ္တိဗေဒကိုအန္တရာယ်များကိုရှောင်ရှားရန်နည်းလမ်းများကိုခွဲခြားနိုင်သည်။