လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဆက်နွယ်သောလုပ်ထုံးလုပ်နည်းများကို cursors ဖြင့်ကိုင်တွယ်ရန် Next_Result () ကိုသုံးပါ

ဆက်နွယ်သောလုပ်ထုံးလုပ်နည်းများကို cursors ဖြင့်ကိုင်တွယ်ရန် Next_Result () ကိုသုံးပါ

gitbox 2025-05-06

PHP တွင်သိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများကို cursors ဖြင့်ကိုင်တွယ်ခြင်းသည်အထူးသဖြင့်ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်သောအခါဘုံလည်ပတ်မှုတစ်ခုဖြစ်သည်။ cursors သည် developer များဒေတာလိုင်းကိုလိုင်းဖြင့်ပြန်လည်ရယူရန်ခွင့်ပြုသည့်ဒေတာဘေ့စ်တွင်ထိန်းချုပ်မှုပုံစံဖြစ်သည်။ MySQL (သို့ ) maliadb ဒေတာဘေ့စ်ကိုသုံးသောအခါသိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများသည်ရလဒ်အစုအဝေးများကိုပြန်ပို့နိုင်ပြီးနောက်အခြေအနေကိုကိုင်တွယ်ရန်နောက် function ကိုအသုံးပြုသည်။

1 ။ အခြေခံသဘောတရားများ

သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းတစ်ခုသည် ဒေတာဘေ့စ်တွင်သိမ်းဆည်းထားသည့်ကြိုတင်ဖော်ပြထားသော SQL ထုတ်ပြန်ချက်များကိုကြိုတင်သတ်မှတ်ထားပြီးအကြိမ်ပေါင်းများစွာဟုခေါ်သည်။ သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများသည်ရလဒ်အချည်းနှီးဖြစ်စေသောရလဒ်များကိုပြန်ပို့နိုင်သည်။ PHP တွင် MySQLI extension သို့မဟုတ် pdo extension မှတဆင့် MySQL database နှင့်ဆက်သွယ်နိုင်သည်။

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

2 ။ တစ် ဦး cursor နှင့်အတူသိုလှောင်လုပ်ထုံးလုပ်နည်းဖန်တီးပါ

ပထမ ဦး စွာကျွန်ုပ်တို့သည်ရလဒ်အစုံများ၏ပြန်လည်ရောက်ရှိသောသိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းတစ်ခုဖန်တီးရန်လိုအပ်သည်။ ဒေတာဘေ့စ်တွင်, သင်သည်တော်တော်များများ၏ရှာဖွေမှုရလဒ်များကိုပြန်ပို့သောရိုးရှင်းသောသိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းတစ်ခုဖန်တီးနိုင်သည်။ ဤတွင်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းတစ်ခုဖန်တီးရန်ဥပမာတစ်ခုဖြစ်သည်။

 DELIMITER $$

CREATE PROCEDURE multiple_results()
BEGIN
    -- ပထမရလဒ်ကိုပြန်ပို့ပါ
    SELECT * FROM users;

    -- ဒုတိယရလဒ်ကိုပြန်ပို့ပါ
    SELECT * FROM orders;
END$$

DELIMITER ;

ဤသိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်း မျိုးစုံ () အမြောက်အများ () querties ၏ရလဒ်ကိုပြန်လည်ရှာဖွေခြင်း၏ရလဒ်အမြင့်နှစ်ခုနှင့် မှာ စာစားပွဲ၏အချက်အလက်များ၏အချက်အလက်များကိုပြန်လည်ရောက်ရှိစေသည်။

3 ။ php ရဲ့ နောက်လာမည့် radefult () function ကိုသုံးပါ cursors ကိုကိုင်တွယ်ရန်

နောက်တစ်ခုကဒီသိုလှောင်ထားတဲ့လုပ်ထုံးလုပ်နည်းကိုခေါ်ယူဖို့ PHP code ကိုရေးပြီးရလဒ်အားလုံးကိုရဖို့ နောက် function ကိုသုံးမယ်။

 <?php
// ဖန်တီး MySQLi ဆက်
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// 检查ဆက်
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// သိုလှောင်လုပ်ထုံးလုပ်နည်းများကိုခေါ်ပါ
$mysqli->multi_query("CALL multiple_results()");

// ရလဒ် set ကို looping
do {
    // လက်ရှိရလဒ် set ကိုရယူပါ
    if ($result = $mysqli->store_result()) {
        while ($row = $result->fetch_assoc()) {
            // လက်ရှိရလဒ်အစု၏ပါဝင်မှု output
            echo "User ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
        }
        $result->free();
    }
    // နောက်ရလဒ်ကိုရယူပါ
} while ($mysqli->next_result());

// 关闭ဆက်
$mysqli->close();
?>

4 ။ code ခွဲခြမ်းစိတ်ဖြာ

  • ဆက်သွယ်မှုတစ်ခုကိုဖန်တီးပါ ။ ပထမအချက်မှာ MySQLI အသစ်မှတဆင့် MySQL ဒေတာဘေ့စ် နှင့်ဆက်သွယ်မှုတစ်ခုဖန်တီးသည်။ ကျေးဇူးပြု. ဒေတာဘေ့စ်၏အိမ်ရှင်, အသုံးပြုသူအမည်, စကားဝှက်နှင့်ဒေတာဘေ့စ်အမည်ကိုပြုပြင်ပါ။

  • သိမ်းဆည်းထားသောသိမ်းထားသောလုပ်ထုံးလုပ်နည်းများကို execute လုပ်ထုံးလုပ်နည်းများ - သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများကို Multi_query () နည်းလမ်းဖြင့်လုပ်ဆောင်ပါ။ ဤဥပမာတွင် Multiple_results () ဟုခေါ်ဆိုပါ () သည် သိမ်းဆည်းထားသောသိမ်းဆည်းထားသောလုပ်ထုံးလုပ်နည်းအတိုင်းလုပ်ဆောင်သည်။

  • ရလဒ်မျိုးစုံရလဒ်များ - ရလဒ်အားလုံးရရန် Do-wheop ကိုသုံးပါ။ ကွင်းဆက်တစ်ခုစီတွင်ကျွန်ုပ်တို့သည်လက်ရှိရလဒ်ကိုသိုလှောင်ထားသည့် စတိုးဆိုင် () method () method () မှတစ်ဆင့်သတ်မှတ်ထားသည်။ ရလဒ်အစုများရှိပါက Next_result () သည် နောက်ရလဒ်သို့ခုန်ချလိမ့်မည်။

  • အခမဲ့ရလဒ် Set : လက်ရှိရလဒ်အစုကိုပြုပြင်ပြီးနောက် $ ရလဒ် -> အခမဲ့ () မှတဆင့်အခမဲ့မှတ်ဉာဏ်။

5 ။ မှတ်စုဖို့အရာ

  • အမှားကိုင်တွယ်ခြင်း - အမှန်တကယ် applications များတွင်သင့်လျော်သောအမှားကိုင်တွယ်မှုယန္တရားများကို Database စစ်ဆင်ရေးများသို့ 0 င်ရောက်ရန်သေချာစေပါ။

  • ရလဒ်အစုအဝေးများကိုပြုပြင်ခြင်း - သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းသည်အလွန်ကြီးမားသည့်ရလဒ်ကိုပြန်လည်ရောက်ရှိပါကသို့မဟုတ်စုံစမ်းမှုဆိုင်ရာအချက်အလက်ပမာဏသည်ကြီးမားလာပါကစွမ်းဆောင်ရည်ပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။ သင်သည်အတုအယောင်မေးမြန်းချက်များကိုစဉ်းစားနိုင်သည်သို့မဟုတ်မေးမြန်းချက်များကိုပိုမိုကောင်းမွန်စေရန်စဉ်းစားနိုင်သည်။

6 ။ နမူနာ output ကို

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

အသုံးပြုသူများ စားပွဲတင်:

 +----+-------+
| id | name  |
+----+-------+
| 1  | John  |
| 2  | Jane  |
+----+-------+

အမှာ စာ:

 +----+------------+
| id | order_name |
+----+------------+
| 1  | Order A    |
| 2  | Order B    |
+----+------------+

output ကိုဖြစ်လိမ့်မည်:

 User ID: 1 - Name: John
User ID: 2 - Name: Jane
Order ID: 1 - Order Name: Order A
Order ID: 2 - Order Name: Order B

7 ။ အကျဉ်းချုပ်

PHP ၏ Next_result () function ကို အသုံးပြု. ရလဒ်အစုံများဖြင့်သိမ်းဆည်းထားသောလုပ်ထုံးလုပ်နည်းများကိုထိရောက်စွာကိုင်တွယ်ရန်။ သင့်လျော်သောဒေတာဘေ့စ်မေးမြန်းချက်များနှင့် cursor processing မှတဆင့်ရလဒ်တစ်ခုချင်းစီကိုတဖြည်းဖြည်းချင်းရယူနိုင်ရန်နှင့်လျှောက်လွှာရှိအချက်အလက်များကိုပြောင်းလွယ်ပြင်လွယ်စွာလုပ်ဆောင်နိုင်သည်။ ရှုပ်ထွေးသောဒေတာဘေ့စ် application များကိုတီထွင်သည့်အခါဤနည်းသည်အထူးသဖြင့်အသုတ်စစ်ဆင်ရေးများသို့မဟုတ်အတုအယောင်မေးမြန်းချက်များလိုအပ်သည့်အခြေအနေတွင်ပြုလုပ်သောအခါဤနည်းသည်အလွန်အသုံးဝင်သည်။