လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Pagination query function ကိုအကောင်အထည်ဖော်ရန် stmt_init ကိုသုံးပါ

Pagination query function ကိုအကောင်အထည်ဖော်ရန် stmt_init ကိုသုံးပါ

M66 2025-05-18

PHP တွင် MySQLI extension သည် MySQL ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်မှုအတွက်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ဒေတာအမြောက်အများကိုကျွန်ုပ်တို့လုပ်ဆောင်သည့်အခါဆောင်းပါးများသည်အချက်အလက်အားလုံးကိုတစ်ပြိုင်နက်တည်းတင်ခြင်းကိုရှောင်ရှားရန်အလွန်များသောအားဖြင့်ထိရောက်သောနည်းစနစ်တစ်ခုဖြစ်သည်။ ယနေ့ကျွန်ုပ်တို့သည် Pagination query function ကိုအကောင်အထည်ဖော်ရန် MySQLI :: stmt_init function ကိုမည်သို့အသုံးပြုရမည်ကိုလေ့လာမည်။

1 ။ Pagination query ဆိုတာဘာလဲ။

Pagination Query သည်အချက်အလက်အချို့နှင့်အညီအချက်အလက်များကိုအသုတ်တွင်ဖော်ပြခြင်းနှင့်စာမျက်နှာတစ်ခုချင်းစီကိုစာမျက်နှာတစ်ခုချင်းစီကိုပြသခြင်း, Paging မှတစ်ဆင့်ကျွန်ုပ်တို့သည်ဒေတာပြုပြင်ထုတ်လုပ်မှု၏စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်မလုပ်နိုင်ပါ။

2 ။ MySQLI :: stmt_init ၏အခန်းကဏ်။

MySQLI :: stmt_init function ကို MySQLI_STMT အရာဝတ်ထုအသစ်တစ်ခုကိုစတင်ရန်အသုံးပြုသည်။ ထို့နောက် preprocessing ထုတ်ပြန်ချက်များကိုအရာဝတ်ထုမှတဆင့်ကွပ်မျက်နိုင်သည်။ Preprocessing ထုတ်ပြန်ချက်များသည် SQL Injection ၏အန္တရာယ်ကိုရှောင်ရှားနေစဉ်စုံစမ်းမှုစွမ်းအားစွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်။

3 ။ MySQLI :: stmt_init ကိုအသုံးပြုပြီး Pagination Query ကိုဘယ်လိုအကောင်အထည်ဖော်မလဲ။

ကျွန်ုပ်တို့တွင်အသုံးပြုသူ၏အချက်အလက်အမြောက်အများပါ 0 င်သော အသုံးပြုသူများ စားပွဲပေါ်မှာရှိပြီးဆိုပါစို့။ ပထမ ဦး စွာကျွန်ုပ်တို့သည်စုစုပေါင်းအချက်အလက်အရေအတွက်ကိုတွက်ချက်ရန်လိုသည်, ထို့နောက်စာမျက်နှာနံပါတ်ပေါ်မူတည်ပြီးသောစုံစမ်းမှု၏ offset ကိုတွက်ချက်ရန်နှင့်စာမျက်နှာတစ်ခုစီတွင်ပြထားတဲ့အပိုင်းအစအရေအတွက်ကိုတွက်ချက်ပါ။ အောက်ဖော်ပြပါများသည်အခငြ့်အရေးစုံစမ်းမှုကိုအကောင်အထည်ဖော်ရန်အဆင့်များဖြစ်ကြသည်။

4 ။ နမူနာကုဒ်

 <?php
// ဒေတာဘေ့စ် connection configuration ကို
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ
$conn = new mysqli($servername, $username, $password, $dbname);

// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// စာမျက်နှာတစ်ခုချင်းစီကိုပြသတဲ့ entries အရေအတွက်
$records_per_page = 10;

// လက်ရှိစာမျက်နှာနံပါတ်ကိုရယူပါ,default သည်ပထမဆုံးစာမျက်နှာဖြစ်သည်
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$start_from = ($page - 1) * $records_per_page;

// ဒေတာစုစုပေါင်းအရေအတွက်ကိုရယူပါ
$sql_count = "SELECT COUNT(*) AS total_records FROM users";
$result_count = $conn->query($sql_count);
$row = $result_count->fetch_assoc();
$total_records = $row['total_records'];

// စာမျက်နှာများစုစုပေါင်းအရေအတွက်ကိုတွက်ချက်ပါ
$total_pages = ceil($total_records / $records_per_page);

// အသုံးပြု stmt_init function ကို snotination preprocessing ကြေညာချက်
$stmt = $conn->stmt_init();
if ($stmt->prepare("SELECT * FROM users LIMIT ?, ?")) {
    // parameters တွေကိုချည်ထား
    $stmt->bind_param("ii", $start_from, $records_per_page);
    
    // တစ် ဦး စုံစမ်းမှု execute
    $stmt->execute();
    
    // ရလဒ်များကိုရယူပါ
    $result = $stmt->get_result();
    
    // output ကိုဒေတာ
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
    }
    
    // ရလဒ်ကိုလွှတ်ပေးရန်
    $stmt->free_result();
    
    // Preprocessing ကြေညာချက်ကိုပိတ်ပါ
    $stmt->close();
}

// ဒေတာဘေ့စ် connection ကိုပိတ်ပါ
$conn->close();
?>

<!-- paging လင့်များပြသပါ -->
<div>
    <p>Page: 
        <?php
        // Pagination Navigation
        for ($i = 1; $i <= $total_pages; $i++) {
            echo "<a href='m66.net?page=$i'>$i</a> ";
        }
        ?>
    </p>
</div>

5 ။ ကုဒ်ကိုရှင်းပြပါ

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

  • paging offset ကိုတွက်ချက်ပါ။ စာမျက်နှာတစ်ခုစီတွင်ဖော်ပြထားသောမှတ်တမ်းအရေအတွက်မှာမှတ်တမ်းများဖြစ်ပြီး Records_per_page ဖြစ်သည်။ လက်ရှိစာမျက်နှာနံပါတ် $ စာမျက်နှာ ပေါ်တွင် အခြေခံ. စုံစမ်းမှုစတင်ရန်မည်သည့်မှတ်တမ်းကိုတွက်ချက်သည်။ $ start_from = ($ စာမျက်နှာ - 1) * $ records_per_per_per_per_per_page က offset ကိုတွက်ချက်သည်။

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

  • Pagination Pagination Query: stmt_init () ကို သုံးပါ။ ရှာဖွေမှု parameters တွေကိုချည်နှောင်ရန် ပြင်ဆင်ခြင်း () နည်းလမ်း, bind_param () နည်းလမ်းဖြင့်ရှာဖွေခြင်းကိုရေးပါ။

  • Display Paging Navigage: ကွင်းဆက်မှတဆင့် paging link များကိုထုတ်လုပ်ပါ။ စာမျက်နှာတစ်ခုချင်းစီကိုနှိပ်ခြင်းနံပါတ်ကိုနှိပ်ခြင်းသည်သက်ဆိုင်ရာစာမျက်နှာသို့ခုန်ချပြီး M66.net အုတ်မြစ်စာရင်းတွင်ပြပါလိမ့်မည်။

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

MySQLI :: Stmtt_init function ကိုအသုံးပြုပြီး Pagination Query ကိုအသုံးပြုခြင်းသည်အချက်အလက်ရှာဖွေမှု၏ထိရောက်မှုကိုတိုးတက်စေရုံသာမက SQL Injection ကိုထိရောက်စွာတားဆီးနိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကြီးမားသောအချက်အလက်များလိုအပ်သည့်အခြေအနေများတွင်ရှုခင်းများကိုကြည့်ရှုခြင်းတွင်ကြည့်ရှုပါ။ ကျိုးကြောင်းဆီလျော်သောအစာရှောင်ခြင်းဒီဇိုင်းဖြင့်စနစ်စွမ်းဆောင်ရည်နှင့်သုံးစွဲသူအတွေ့အကြုံကိုသိသိသာသာတိုးတက်လာနိုင်သည်။

Pagination query function ကိုအကောင်အထည်ဖော်ရန် MySQLI :: stmt_init function ကိုမည်သို့အသုံးပြုရမည်ကိုနားလည်ရန်ဤဆောင်းပါးသည်သင့်အားနားလည်နိုင်ရန်မျှော်လင့်ပါ။ သင့်တွင်မေးခွန်းများရှိပါကသို့မဟုတ်ထပ်မံဆွေးနွေးရန်လိုအပ်ပါက ကျေးဇူးပြု. ဆွေးနွေးရန်သတင်းပို့ပါ။