လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI :: STMT_INIT ၏မှန်ကန်သောအသုံးပြုမှုကို Bind_Param နှင့်အတူ

MySQLI :: STMT_INIT ၏မှန်ကန်သောအသုံးပြုမှုကို Bind_Param နှင့်အတူ

M66 2025-05-29

PHP တွင် MySQLI သည် MySQL ဒေတာဘေ့စ်များကိုလုပ်ကိုင်ရန်နည်းလမ်းအမျိုးမျိုးကိုထောက်ပံ့ရန်နည်းလမ်းအမျိုးမျိုးကိုထောက်ပံ့ပေးနိုင်သည်။ MySQLI :: stmt_init နှင့် bind_init နှင့် bind_param သည် preprocessing ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါအသုံးပြုသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကို parameter များအတွက်မှန်ကန်စွာမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ MySQLI :: stmt_init နှင့် bind_in_inam လုပ်ဆောင်ချက်များကဘာလဲ။

  • MySQLI :: Stmtt_init သည် MySQLI အတန်းထဲတွင် mySQLI လူတန်းစားတွင်နည်းလမ်းတစ်ခုဖြစ်သည်။ ဤနည်းလမ်းသည် SQL query ကိုမလုပ်ဆောင်နိုင်ပါ။

  • အဆိုပါ bind_param နည်းလမ်းကိုအမှန်တကယ် parameters တွေကို preprocessing statement တစ်ခုအဖြစ်ချည်နှောင်ရန်အသုံးပြုသည်။ SQL Query များကိုကွပ်မျက်သည့်အခါဤချည်နှောင်ထားသော parameteters များသည် placeholders များကို SQL ကြေငြာချက်တွင်အစားထိုးသည်။

2 ။ အသုံးပြုမှုလုပ်ငန်းစဉ်

MySQLI :: PHP ရှိ stmt_init နှင့် bind_inam ကို အသုံးပြု. အခြေခံဖြစ်စဉ်သည်အောက်ပါအတိုင်းဖြစ်သည် -

  1. ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ပါ ။ ပထမ ဦး စွာ MySQLI အတန်းမှတစ်ဆင့်ဒေတာဘေ့စ်ကိုဆက်သွယ်ရန်လိုအပ်သည်။

  2. Preprocessing statement တစ်ခုဖန်တီးပါ ။ Proprocessing statement abder ကို stmtt_init မှတစ်ဆင့်ဖန်တီးပါ။

  3. Bind Polametersters - သုံးစွဲသူထည့်သွင်းမှုကို preprocessing story ကို placefolder ကို placefolder သို့ချည်နှောင်ရန် Bind_param နည်းလမ်းကိုအသုံးပြုပါ။

  4. Execution ထုတ်ပြန်ချက် - SQL မေးမြန်းမှုကိုကောင်းသော parameters များချည်နှောင်ခြင်းနှင့်အတူ Execute Execute ။

  5. ပြုပြင်ခြင်းရလဒ်များ - စုံစမ်းမှုရလဒ်များကိုရယူပါ။

MySQLI :: stmt_init နှင့် bind_init နှင့် bind_inite ကိုအသုံးပြုနည်းကိုပြသသည့်ရိုးရှင်းသောဥပမာကုဒ်ဖြစ်သည်။

 <?php
// 1. ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "user", "password", "database");

// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}

// 2. ကြိုတင်ကြေငြာချက်တစ်ခုဖန်တီးပါ
$stmt = $mysqli->stmt_init();
if ($stmt === false) {
    die("စတင်ကြေညာချက်မအောင်မြင်ပါ");
}

// 3. ပြင်ဆင်ထား SQL မေးမြန်း
$sql = "SELECT name, email FROM users WHERE age = ? AND status = ?";

// 4. parameters တွေကိုချည်ထား
if ($stmt->prepare($sql)) {
    // 假设我们要မေးမြန်း年龄为 30 နှင့် status ကိုဖြစ်ပါတယ် 'active' အသုံးပြုသူများ
    $age = 30;
    $status = 'active';

    // အသုံးပြု bind_param parameters တွေကိုချည်ထား
    // 'i' Integer အမျိုးအစားကိုညွှန်ပြ,'s' string ကိုအမျိုးအစားကိုကိုယ်စားပြုတယ်
    $stmt->bind_param('is', $age, $status);

    // 5. 执行မေးမြန်း
    $stmt->execute();

    // 6. 获取မေးမြန်း结果
    $result = $stmt->get_result();

    // 输出မေးမြန်း结果
    while ($row = $result->fetch_assoc()) {
        echo "Name: " . $row['name'] . " - Email: " . $row['email'] . "<br>";
    }

    // 7. ကြေငြာချက်
    $stmt->close();
}

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

3 ။ အသေးစိတ်သုံးသပ်ချက်

  1. ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ပါ ။ ပထမ ဦး စွာ MySQLI အသစ် မှတစ်ဆင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကို ဖန်တီး. အမှားကိုင်တွယ်မှုကိုလုပ်ဆောင်ပါ။

  2. Preprocessing statement တစ်ခုဖန်တီးပါ - Proprocessing statement object ကို $ MySQLI-> stmt_init မှတဆင့် inpection) ကိုစတင်ပါ။ အကယ်. မှားယွင်းသော ပြန်လာလျှင်၎င်းသည်စတင်ခြင်းမအောင်မြင်ပါ။

  3. ပြင်ဆင်ရန် SQL query ကိုပြင်ဆင်ပါပြင်ဆင်ခြင်း နည်းလမ်းမှတဆင့် SQL query ကိုပြင်ဆင်ပါ placeholder သည် bind_param မှတစ်ဆင့်ချည်နှောင်ရန်စောင့်ဆိုင်းနေသည်။

  4. bind portetleters : bind_param နည်းလမ်းသည် parameters နှစ်ခုကိုလက်ခံရရှိသည်။

    • ပထမ ဦး ဆုံး parameter သည်တစ်ခုချင်းစီကို parameter သည်အမျိုးအစားကိုသတ်မှတ်သော type type string ကိုဖြစ်ပါတယ်။ ဥပမာအားဖြင့် - 'i' သည် Integer အမျိုးအစားကိုကိုယ်စားပြု သည်

    • ဒုတိယနှင့်နောက်ဆက်တွဲ parametersters သည် SQL query သို့ချည်နှောင်ထားရန်အမှန်တကယ် variable များဖြစ်သည်။

  5. Execute query : Proprocessing ထုတ်ပြန်ချက်များကို execute နည်းလမ်းကိုသုံးပါ။ SQL query ကိုဒေတာဘေ့စ်သို့ပို့လိမ့်မည်။

  6. query query ရလဒ်များကိုရယူပါExit_result မှတစ်ဆင့် ကွပ်မျက်ခံရ သည့်ရလဒ်ကိုရယူပါ။

  7. အနီးကပ်ထုတ်ပြန်ချက်များနှင့်ဆက်သွယ်မှုများ - နောက်ဆုံးတွင်, စုံစမ်းမှုကိုအကောင်အထည်ဖော်ပြီးနောက်ကြေငြာချက်များနှင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုများကိုပိတ်ပါ။

4 ။ အမျိုးမျိုးသော parameters တွေကိုချည်နှောင်ရန် bind_param ကိုသုံးပါ

အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် bind_param သို့ခညျြနှောငျ parametersters မှခညျြနှောငျကိန်း, strings, flowing point နံပါတ်များအပါအဝင်အမျိုးအစားများအများအပြားဖြစ်နိုင်သည်။ ဘုံအမျိုးအစားများကိုအောက်ပါအတိုင်းဖော်ပြထားသည်။

  • i : Integer Type (Int) ။

  • D : နှစ်ချက်လုံး precision point type (နှစ်ဆ) ။

  • S : String အမျိုးအစား (string) ။

  • B : Blob အမျိုးအစား (binary data) ။

လိုအပ်သလို Bind_param သည် ဤအမျိုးအစားများအပေါ် အခြေခံ. SQL Query သို့ parameters များကိုချည်နှောင်ထားသည်။

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

  • placeholders ၏အမိန့်သည် parameters တွေကိုအမိန့်နှင့်ကိုက်ညီရမည် - SQL query ရှိ placeholders ၏အမိန့်သည် parameters ၏အမိန့်နှင့်ကိုက်ညီရမည်။

  • အမှားများကိုစစ်ဆေးပါstmtt_init ကဲ့သို့သောနည်းလမ်းများကို အသုံးပြု. ပြင်ဆင်ခြင်း နှင့် bind_param ကို အသုံးပြုသောအခါအလားအလာရှိသောအမှားများကိုရှောင်ရှားရန်ပြန်လာတန်ဖိုးကိုအမြဲတမ်းစစ်ဆေးရန်အကြံပြုသည်။

  • SQL injection Protection - Preprocessing ထုတ်ပြန်ချက်များနှင့်စည်းနှောင်ထားသော parametersters အသုံးပြုခြင်းသည် SQL Injection ကိုကာကွယ်ရန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။

အကျဉ်းချုပ်

MySQLI :: stmt_init နှင့် bind_in_inam functions များကိုအသုံးပြုခြင်းဖြင့် developer များက SQL Injection ကိုအလွယ်တကူကာကွယ်နိုင်ပြီးဒေတာဘေ့စ်လုပ်ငန်းများ၏လုံခြုံရေးနှင့်တည်ငြိမ်မှုကိုသေချာစေသည်။ Binding Parametersters ၏လုပ်ငန်းစဉ်သည်ရိုးရှင်းပြီးအကျိုးရှိရှိဖြစ်သည်။ အထူးသဖြင့်အသုံးပြုသူ input ကိုလုပ်ဆောင်ရန်လိုအပ်သည့်မေးမြန်းချက်များအတွက်သင့်တော်သည်။

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

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    mysqli