လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI :: stmt_init ၏စံသတ်မှတ်ချက်ဥပမာများဥပမာ () ပြင်ဆင်ခြင်း ()

MySQLI :: stmt_init ၏စံသတ်မှတ်ချက်ဥပမာများဥပမာ () ပြင်ဆင်ခြင်း ()

M66 2025-05-29

ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များသည် PHP တွင် MySQLI extensions ကိုအသုံးပြုသောအခါအချက်အလက်များလုံခြုံရေးကိုသေချာစေရန်နှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အတွက်အရေးကြီးသောနည်းလမ်းတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် MySQLI :: stmt_init function ကိုမှန်ကန်သောအသုံးပြုမှုနှင့် ပြင်ဆင်ခြင်း () method method ကိုအသေးစိတ်ဖော်ပြပါမည်။

1 ။ MySQLI :: stmt_init ဆိုတာဘာလဲ။

MySQLI :: stmt_init ဆိုသည်မှာ MySQLI_STMT (ဖော်ပြချက်) အရာဝတ်ထုကိုအစဖွင့်ရန် MySQLI မှပေးသောနည်းလမ်းဖြစ်သည်။ ထို့နောက်ဤအရာဝတ်ထုကို SQL ထုတ်ပြန်ချက်များကိုကြိုတင်ထုတ်ပြန်ရန်အသုံးပြုနိုင်သည်။

Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 mysqli_stmt mysqli::stmt_init ( void )

၎င်းကိုများသောအားဖြင့် SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ရန် ပြင်ဆင်ခြင်း () နည်းလမ်းဖြင့်အသုံးပြုသည်။

2 ။ ပြင်ဆင်ခြင်း () နည်းလမ်းကဘာလဲ။

ကြိုတင်ပြင်ဆင်မှု () နည်းလမ်းကို SQL ကြေငြာချက်ကိုပြင်ဆင်ရန်အသုံးပြုသည်။ ၎င်းသည် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုထိရောက်စွာတားဆီးနိုင်သည်။

Syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 bool mysqli_stmt::prepare ( string $query )

3 ။ အသုံးပြုမှုအဆင့်များအကြောင်းအသေးစိတ်ရှင်းပြချက်

MySQLI :: stmt_init ကို အသုံးပြု . စံသတ်မှတ်ချက်ကိုဤတွင်ဖော်ပြထားသည်။

  1. ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ

  2. preprocessing ကြေညာချက်အရာဝတ်ထုကိုအစပျိုး

  3. ပြင်ဆင်ခြင်းကိုအသုံးပြုပြီးပြင်ဆင်ခြင်း ()

  4. bind parameters တွေကို (ဆိုပါက)

  5. Execution ကြေငြာချက်

  6. ရလဒ်ကိုရယူပါ (အကယ်. ၎င်းသည်စုံစမ်းမှုဖော်ပြချက်ဖြစ်ပါက)

  7. အနီးကပ်ထုတ်ပြန်ချက်များနှင့်ဆက်သွယ်မှု

4 ။ အသေးစိတ်ကုဒ်များဥပမာ

ကျွန်ုပ်တို့ တွင် Fields: ID , Username , အီးမေးလ် ။ အသုံးပြုသူအမည်အပေါ် အခြေခံ. သုံးစွဲသူ၏အီးမေးလ်လိပ်စာကိုကျွန်ုပ်တို့မေးမြန်းလိုပါသည်။

 <?php
// ပထမခြေလှမ်း:ဒေတာဘေ့စ် connection တစ်ခုတည်ဆောက်ပါ
$mysqli = new mysqli("localhost", "db_user", "db_password", "db_name");

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

// အဆင့် 2:preprocessing ကြေညာချက်အရာဝတ်ထုကိုအစပျိုး
$stmt = $mysqli->stmt_init();

// အဆင့် 3:ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
$sql = "SELECT email FROM users WHERE username = ?";
if (!$stmt->prepare($sql)) {
    die("SQL Preprocessing မအောင်မြင်ပါ: " . $stmt->error);
}

// အဆင့် 4:parameters တွေကိုချည်ထား
$username = "testuser";
$stmt->bind_param("s", $username);  // "s" string ကိုအမျိုးအစားကိုကိုယ်စားပြုတယ်

// အဆင့် 5:执行အသေအချာပေြာဆိုချက်
$stmt->execute();

// အဆင့် 6:ရလဒ်များကိုချည်နှောင်ခြင်းနှင့်ဒေတာကိုရယူပါ
$stmt->bind_result($email);
if ($stmt->fetch()) {
    echo "အသုံးပြုသူအီးမေးလ်သည်: " . $email;
} else {
    echo "ဒီအသုံးပြုသူကိုရှာမတွေ့ပါ。";
}

// အဆင့် 7:关闭အသေအချာပေြာဆိုချက်与连接
$stmt->close();
$mysqli->close();
?>

5 ။ မကြာခဏမေးသောမေးခွန်းများနှင့်ကြိုတင်ကာကွယ်မှုများ

1 ။ အဘယ်ကြောင့် ပြင်ဆင်နှင့်အတူ SQL ကိုတိုက်ရိုက်ရေးသားပါ။

SQL ကို Query () method ကို သုံး. တိုက်ရိုက်ကွပ်မျက်ခံရနိုင်သော်လည်း SQL Injection Attacks သို့ဤအရာသည်အားနည်းချက်ရှိသည်။ စည်းနှောင်ထားသော ပြင်ဆင်ခြင်း () နှင့် parameter သည်ဤပြ problem နာကိုထိရောက်စွာကာကွယ်နိုင်သည်။

2 ။ stmt_init () နှင့် ပြင်ဆင်ခြင်း အကြားခြားနားချက်ကဘာလဲ။

stmt_init () အချည်းနှီးသောဖော်ပြချက်အရာဝတ်ထုကိုဖန်တီးပြီး ပြင်ဆင် () SQL template ကိုဖွင့်သည်။ stmt_init () ကို skip လုပ်ပြီး $ MySQLI-> ပြင်ဆင်ခြင်း () ကို အဆင့်တစ်ဆင့်အပြီးသတ်နှင့်ပြင်ဆင်မှုကိုဖြည့်စွက်ရန်တိုက်ရိုက်ခေါ်ဆိုနိုင်သည်။

3 ။ ဖော်ပြချက်အရာဝတ္ထုများပြန်လည်အသုံးပြုနိုင်ပါသလား?

ဟုတ်ပါတယ်, SQL template ဖွဲ့စည်းပုံတညီတညွတ်တည်းဖြစ်သရွေ့, ဖော်ပြချက်အရာဝတ်ထုကိုပြန်လည်အသုံးပြုပြီး parameters တွေကိုပြောင်းလဲနိုင်ပါတယ်။

6 ။ ဥပမာ - post form ကို သုံး. ဒေတာကိုထည့်ပါ

အောက်ပါဥပမာသည်အချက်အလက်များကိုပုံစံဖြင့် တင်ပြ. ဒေတာဘေ့စ်သို့လုံခြုံစွာထည့်သွင်းရမည်ကိုပြသသည်။

 <?php
$mysqli = new mysqli("localhost", "db_user", "db_password", "db_name");

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST["username"] ?? "";
    $email = $_POST["email"] ?? "";

    $stmt = $mysqli->stmt_init();
    if ($stmt->prepare("INSERT INTO users (username, email) VALUES (?, ?)")) {
        $stmt->bind_param("ss", $username, $email);
        if ($stmt->execute()) {
            echo "အသုံးပြုသူမှတ်ပုံတင်ခြင်းအောင်မြင်စွာ!";
        } else {
            echo "Execution မအောင်မြင်ပါ:" . $stmt->error;
        }
        $stmt->close();
    }
}

$mysqli->close();
?>
<form method="POST" action="https://m66.net/register.php">
    အသုံးပြုသူ:<input type="text" name="username" required><br>
    စာပို့:<input type="email" name="email" required><br>
    <input type="submit" value="စာရင်း">
</form>

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

MySQLI :: stmt_init နှင့် ပြင်ဆင်ခြင်း () ပြင်ဆင်ခြင်း () PHP အတွက်အစွမ်းထက်သောဒေတာဘေ့စ်လုံခြုံရေးယန္တရားကိုထောက်ပံ့ပေးသည်။ Parameter သည် SQL Injection ကိုကာကွယ်ရုံသာမက Execution ထိရောက်မှုကိုတိုးတက်စေသည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်ကိုလည်ပတ်ရန်ကြိုတင်သတ်မှတ်ထားသောထုတ်ပြန်ချက်များကိုအမြဲတမ်းအသုံးပြုရန်အကြံပြုသည်။

MySQLI တွင် Bind_param () နှင့် bind_result () နှင့် bind_result () ၏အဆင့်မြင့်သုံးစွဲမှုအကြောင်းပိုမိုလေ့လာလိုပါသလား။