လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Veget_result နှင့် SQL server ၏ရလဒ်မျိုးစုံကိုကြွေးပါ။

Veget_result နှင့် SQL server ၏ရလဒ်မျိုးစုံကိုကြွေးပါ။

gitbox 2025-05-06

PHP တွင် SQL server (အထူးသဖြင့် SQLSRV extension များကိုအသုံးပြုခြင်း) တွင် SQL server (အထူးသဖြင့် SQLSRV extension များကိုအသုံးပြုခြင်း) တွင်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများသို့မဟုတ်သုတ်ထုတ်ဖော်ပြောကြားချက်များဖြင့်ပြန်လည်ရောက်ရှိသည့်အခြေအနေများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဤရလဒ်ကိုမှန်ကန်စွာကိုင်တွယ်ရန် SQLSRV_FETT_ARRAY () ကို အသုံးပြုခြင်းသည်မလုံလောက်ပါ။ SQLSRV_NEXT_RESult () function ကိုသုံးရန်လိုအပ်သည်။ ဤဆောင်းပါးသည်ပြန်လာသောရလဒ်အစုံများမှတဆင့် Leget_result () ကို အမြင်နှင့်လုံခြုံစွာအသုံးပြုရမည်ကိုရှင်းပြပါမည်။

Next_result () ကဘာလဲ။

SQL ဆာဗာတွင်စုံစမ်းမှုသည်ရလဒ်မျိုးစုံကိုပြန်ပို့နိုင်သည်။

 SELECT * FROM users;
SELECT * FROM orders;

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

အခြေခံအသုံးပြုမှုနည်းလမ်း

ရိုးရှင်းတဲ့ဥပမာတစ်ခုကိုအရင်ကြည့်ကြစို့။

 <?php
$serverName = "localhost";
$connectionOptions = array(
    "Database" => "MyDatabase",
    "Uid" => "myuser",
    "PWD" => "mypassword"
);

// ဆက်သွယ်မှုတစ်ခုတည်ဆောက်ပါ
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}

// မျိုးစုံရလဒ်အစုံ execute SQL မေးမြန်း
$sql = "SELECT * FROM users; SELECT * FROM orders;";
$stmt = sqlsrv_query($conn, $sql);

if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}

$resultIndex = 1;

do {
    echo "ကိုင်တွယ် {$resultIndex} ရလဒ် set ကို:\n";
    while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
        print_r($row);
    }
    $resultIndex++;
} while (sqlsrv_next_result($stmt));

// အရင်းအမြစ်များကိုအခမဲ့
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>

အသုံးပြုမှုဆိုင်ရာအခြေအနေများဥပမာ - Paging Query နှင့်သိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများ

အချို့သောစီးပွားရေးလုပ်ငန်း applications များတွင်များသောအားဖြင့်အကောင်အထည်ဖော်ရန်အတွက်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများကိုအသုံးပြုသည်။

 -- paging သိုလှောင်လုပ်ထုံးလုပ်နည်းယူဆ
CREATE PROCEDURE GetPagedUsers
AS
BEGIN
    SELECT * FROM users ORDER BY id OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;
    SELECT COUNT(*) AS TotalCount FROM users;
END

PHP တွင်၎င်းကိုကျွန်ုပ်တို့လုပ်ဆောင်သောအခါကျွန်ုပ်တို့လုပ်နိုင်သည်။

 $sql = "{CALL GetPagedUsers()}";
$stmt = sqlsrv_query($conn, $sql);

if ($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}

// 第一ရလဒ် set ကို:ဒေတာစာရင်း
$users = [];
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    $users[] = $row;
}

// 移动到下一ရလဒ် set ကို
if (sqlsrv_next_result($stmt)) {
    // 第二ရလဒ် set ကို:စုစုပေါင်းမှတ်တမ်းများ
    if ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
        $totalCount = $row['TotalCount'];
    }
}

print_r([
    'users' => $users,
    'totalCount' => $totalCount,
]);

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

  • အရင်းအမြစ်ဖြန့်ချိမှု - SQLSRV_FREE_STMT () ကိုရှင်းရှင်းလင်းလင်းခေါ်ရန်သေချာသည်။

  • ရလဒ်အစုံ၏အမိန့်သည်ရှင်းရှင်းလင်းလင်းဖြစ်သင့်သည် ။ ရလဒ်အစုံများ၏အစဉ်အလာအရ SQL ၏အမိန့်အားဖြင့်လုံးဝဆုံးဖြတ်သည်။

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

အကျဉ်းချုပ်

sqlsrv_next_result () ကို အသုံးပြု. SQLST_NExt_result () ကို အသုံးပြု. SQL Server မှပြန်လာသည့်ရလဒ်အမျိုးမျိုးကိုကျွန်ုပ်တို့လျောက်ပတ်စွာလုပ်ဆောင်နိုင်သည်။ သတိရပါ, ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ထိုကဲ့သို့သော interfaces များကိုခေါ်ဆိုသောအခါ, စနစ်၏တည်ငြိမ်သောလည်ပတ်မှုကိုသေချာစေရန်သင်အမှားကိုင်တွယ်ခြင်းနှင့်အရင်းအမြစ်ဖြန့်ချိမှုကောင်းလုပ်ဆောင်ရမည်။

SQL Server နှင့် PHP ကိုပိုမိုပေါင်းစပ်သည်ကိုပိုမိုလေ့လာရန်သင်သည်တရားဝင်စာရွက်စာတမ်းများသို့မဟုတ်ကျွန်ုပ်တို့၏သင်ခန်းစာပလက်ဖောင်းများကို https://gitbox.net/php-sqlserver ကို ရယူနိုင်သည်။