လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDostatement :: Fetchobject ကို Pagination query အတွက်အရာဝတ်ထုဒေတာကိုရယူရန်

PDostatement :: Fetchobject ကို Pagination query အတွက်အရာဝတ်ထုဒေတာကိုရယူရန်

gitbox 2025-05-12

နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်ကိုအကောင်အထည်ဖော်ရန်နှင့်ရလဒ်များကိုအရာဝတ်ထုအဖြစ်ပြန်ပို့ရန်လိုအပ်ကြောင်းကျွန်ုပ်တို့မကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ PHP ၏ PDO Extension သည်ဤအရာကိုပြုလုပ်ရန်အလွန်အဆင်ပြေသောနည်းလမ်းတစ်ခုကိုပြုလုပ်ရန်အလွန်အဆင်ပြေသောနည်းလမ်းတစ်ခုဖြစ်သည်

ဤဆောင်းပါးသည်အ ရာဝတ်ထု အချက်အလက်များကိုမှန်ကန်စွာပြုပြင်ခြင်းနှင့်မှန်ကန်စွာလုပ်ဆောင်ခြင်းနှင့်ပေါင်းစပ်ခြင်းအားဖြင့်အစ်မမေးမြန်းခြင်းကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုဥပမာအားဖြင့်သရုပ်ပြပါမည်။

သဘာဝပတ်ဝန်းကျင်ပြင်ဆင်မှု

ပထမ ဦး စွာသင်၏ပတ် 0 န်းကျင်သည် PDO Extensive ဖွင့်ထားကြောင်းသေချာအောင်လုပ်ပါ။ ဥပမာအားဖြင့်:

 <?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$username = 'dbuser';
$password = 'dbpass';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die('ဒေတာဘေ့စဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $e->getMessage());
}
?>

Design Paging Query ကိုဒီဇိုင်း

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

 <?php
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page = max($page, 1); // အသေးငယ်ဆုံးဖြစ်ပါတယ်1စာမျက်နှာ
$pageSize = 5;
$offset = ($page - 1) * $pageSize;

$sql = 'SELECT id, username, email FROM users ORDER BY id ASC LIMIT :limit OFFSET :offset';
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':limit', $pageSize, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
?>

FetchObject ကို အသုံးပြု. အရာဝတ်ထုများ၏စာရင်းကိုရယူပါ

နောက်ရလဒ်ကို FetchObTOcc Method မှတဆင့်လိုင်းအားဖြင့်အရာဝတ်ထုလိုင်းသို့ရလဒ်ကိုမြေပုံဆွဲထားသည်။ သင်သည်လူတန်းစားကိုစိတ်ကြိုက်ပြုလုပ်နိုင်သည်သို့မဟုတ် PHP ၏ built-in stdclass ကိုတိုက်ရိုက်သုံးနိုင်သည်။

ဥပမာ stdclass ကို သုံးပါ:

 <?php
$users = [];

while ($user = $stmt->fetchObject()) {
    $users[] = $user;
}

// အရာဝတ်ထုတစ်ခုခင်းကျင်း print
foreach ($users as $user) {
    echo 'ID: ' . $user->id . '<br>';
    echo 'အသုံးပြုသူ: ' . htmlspecialchars($user->username, ENT_QUOTES, 'UTF-8') . '<br>';
    echo 'စာပို့: ' . htmlspecialchars($user->email, ENT_QUOTES, 'UTF-8') . '<br><br>';
}
?>

သင်စိတ်ကြိုက်သုံးစွဲသူအတန်းအစားကိုအသုံးပြုလိုပါက၎င်းကိုသင်ဤသို့သောပုံစံဖြင့် သတ်မှတ်. ၎င်းကိုဖြတ်သန်းနိုင်သည်။

 <?php
class User
{
    public $id;
    public $username;
    public $email;

    public function getProfileUrl()
    {
        return 'https://gitbox.net/user/profile.php?id=' . urlencode($this->id);
    }
}

$users = [];

while ($user = $stmt->fetchObject(User::class)) {
    $users[] = $user;
}

// အရာဝတ်ထုတစ်ခုခင်းကျင်း print
foreach ($users as $user) {
    echo 'ID: ' . $user->id . '<br>';
    echo 'အသုံးပြုသူ: ' . htmlspecialchars($user->username, ENT_QUOTES, 'UTF-8') . '<br>';
    echo 'စာပို့: ' . htmlspecialchars($user->email, ENT_QUOTES, 'UTF-8') . '<br>';
    echo 'ကိုယ်ရေးရာဇ 0 င် link: <a href="' . htmlspecialchars($user->getProfileUrl(), ENT_QUOTES, 'UTF-8') . '">စစ်ဆေး</a><br><br>';
}
?>

FetchObject နည်းလမ်းသည်သင်သတ်မှတ်ထားသောအတန်းကိုတိုက်ရိုက်ချက်ချင်း intate လုပ်ပြီးတန်ဖိုးများကိုအလိုအလျောက်သတ်မှတ်နိုင်သည်

အကျဉ်းချုပ်

PDostatement :: Fetchobject ကို အသုံးပြု. ဒေတာဘေ့စ်မှတ်တမ်းများကိုအရာ 0 တ်ထုများကိုအရာဝတ်ထုများအဖြစ်မြေပုံဆွဲခြင်းများကိုမြေပုံဆွဲခြင်း, Pagle Query နှင့်ပေါင်းစပ်သောအခါသင်သည် SQL ကြေငြာချက်ကိုက န့်သတ်ချက် နှင့် အဆင်သင့်များကို သာထည့်သွင်းရန်လိုအပ်ပြီး၎င်းကိုတစ်ခုကရယူရန် FetCoboPject ကို သုံးပါ။

အကယ်. သင်သည် MVC Framework သို့မဟုတ် Backend စီမံခန့်ခွဲမှုစနစ်ကိုတည်ဆောက်နေပါကဤနည်းလမ်းသည်သင်၏ code ကိုပိုမိုတိကျပြီးထိန်းသိမ်းနိုင်လိမ့်မည်။