PHP တွင် SQL server (အထူးသဖြင့် SQLSRV extension များကိုအသုံးပြုခြင်း) တွင် SQL server (အထူးသဖြင့် SQLSRV extension များကိုအသုံးပြုခြင်း) တွင်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများသို့မဟုတ်သုတ်ထုတ်ဖော်ပြောကြားချက်များဖြင့်ပြန်လည်ရောက်ရှိသည့်အခြေအနေများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဤရလဒ်ကိုမှန်ကန်စွာကိုင်တွယ်ရန် SQLSRV_FETT_ARRAY () ကို အသုံးပြုခြင်းသည်မလုံလောက်ပါ။ SQLSRV_NEXT_RESult () function ကိုသုံးရန်လိုအပ်သည်။ ဤဆောင်းပါးသည်ပြန်လာသောရလဒ်အစုံများမှတဆင့် Leget_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);
?>
အချို့သောစီးပွားရေးလုပ်ငန်း 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 ကို ရယူနိုင်သည်။