လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> stmt_init နှင့်အတူသိုလှောင်လုပ်ထုံးလုပ်နည်းများကို execute လုပ်နည်း

stmt_init နှင့်အတူသိုလှောင်လုပ်ထုံးလုပ်နည်းများကို execute လုပ်နည်း

M66 2025-05-31

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

1 ။ ပြင်ဆင်မှု

ပထမ ဦး စွာသင်၏ဒေတာဘေ့စ်သည်သိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများကိုဖန်တီးထားကြောင်းသေချာပါစေ။ ကျွန်ုပ်တို့တွင် Get_User_info ဟုခေါ်သောသိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းတစ်ခုရှိသည်။ သုံးစွဲသူ၏အမည်နှင့်အီးမေးလ်ကိုအသုံးပြုသူ၏အမည်နှင့်အီးမေးလ်ကိုပြန်လည်ရောက်ရှိစေသည်။ သိုလှောင်လုပ်ထုံးလုပ်နည်းများအတွက် SQL Code မှာအောက်ပါအတိုင်းဖြစ်သည် -

 DELIMITER $$

CREATE PROCEDURE get_user_info(IN user_id INT)
BEGIN
    SELECT name, email FROM users WHERE id = user_id;
END$$

DELIMITER ;

2 ။ PHP ကုဒ်အကောင်အထည်ဖော်မှု

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

အဆင့် 1: ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုဖန်တီးပါ

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

 <?php
$host = 'localhost';
$username = 'root';
$password = '';
$database = 'test_db';

$mysqli = new mysqli($host, $username, $password, $database);

if ($mysqli->connect_error) {
    die('ဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $mysqli->connect_error);
}
?>

အဆင့် 2 - StMT_INIT ကိုအသုံးပြုပြီးဖော်ပြချက်အရာဝတ်ထုကိုအစပြုပါ

MySQLI :: stmt_init function ကို MySQLI_STMT အရာဝတ်ထုကိုအစပြုရန်အသုံးပြုသည်။ ဤဥပမာတွင် Get_user_info သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းကို execute လုပ်ရန်ကြေငြာချက်တစ်ခုကိုကျွန်ုပ်တို့စတင်ပါလိမ့်မည်။

 <?php
// ကြေညာချက်အရာဝတ်ထုကိုအစပျိုး
$stmt = $mysqli->stmt_init();

// ကန ဦး အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if (!$stmt) {
    die('ထုတ်ပြန်ချက်များကို အစပြု. မရပါ: ' . $mysqli->error);
}
?>

အဆင့် 3 - သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများကိုပြင်ဆင်ပါ

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

 <?php
// သိုလှောင်လုပ်ထုံးလုပ်နည်းကိုပြင်ဆင်ပါ
$query = "CALL get_user_info(?)";
if (!$stmt->prepare($query)) {
    die('သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းပြင်ဆင်မှုမအောင်မြင်ပါ: ' . $stmt->error);
}

// parameters တွေကိုချည်ထား
$user_id = 1;  // အသုံးပြုသူကိုမေးမြန်းလိုပါသည် ID အတွက် 1 အကေြာင်းကြားချက်
$stmt->bind_param("i", $user_id); // "i" ညှစ် integer ပုံနှိပ်စာ

// သိမ်းထားသောလုပ်ထုံးလုပ်နည်းများကို execute လုပ်ပါ
if (!$stmt->execute()) {
    die('သိမ်းဆည်းထားသည့်လုပ်ထုံးလုပ်နည်းကွပ်မျက်မှုမအောင်မြင်ပါ: ' . $stmt->error);
}
?>

အဆင့် 4 - ရလဒ်များကိုရယူပါ။

သိမ်းပိုက်ထားသောလုပ်ထုံးလုပ်နည်းကိုကွပ်မျက်ခံရပြီးနောက်ရလဒ်ကိုများသောအားဖြင့်ပြန်ပို့သည်။ ဤနေရာတွင်ကျွန်ုပ်တို့သည် Exet_result Method Method မှတစ်ဆင့်ကွပ်မျက်မှုရလဒ်ကိုရယူရန်လိုအပ်သည်။

 <?php
// စုံစမ်းမှုရလဒ်များကိုရယူပါ
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    // ဒေတာတစ်ခုချင်းစီကိုလိုင်းတစ်ခု
    while ($row = $result->fetch_assoc()) {
        echo "နံမယ်: " . $row['name'] . "<br>";
        echo "အီးမေးလ်: " . $row['email'] . "<br>";
    }
} else {
    echo "သက်ဆိုင်ရာမှတ်တမ်းများမရှိပါ";
}
?>

အဆင့် 5 - ပိတ်ပစ်ထုတ်ပြန်ချက်များနှင့်ဒေတာဘေ့စဆက်သွယ်မှုများ

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

 <?php
$stmt->close();
$mysqli->close();
?>

3 ။ သိုလှောင်လုပ်ထုံးလုပ်နည်းများတွင်အမှားအယွင်းများကိုကိုင်တွယ်ပါ

ထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင်သင့်လျော်သောအမှားကိုင်တွယ်မှုသေချာစေရန်အရေးကြီးသည်။ ပြင်ဆင်ခြင်း , execute နှင့် get_resulat methods ၏ပြန်လာတန်ဖိုးများကိုစစ်ဆေးခြင်းအားဖြင့်သင်သည်အမှားကိုဖမ်းမိနိုင်သည်။ ထို့အပြင်အမှားတစ်ခုဖြစ်သည့်အခါတွင်ပရိုဂရမ်ကိုမည်သည့်အချိန်၌မဆိုပရိုဂရမ်မှထွက်ပေါ်လာနိုင်ရန်အတွက်ခြွင်းချက်များကိုဖမ်း ရန်ကြိုးစားခြင်းကိုဖမ်းမိ နိုင်သည်။

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

MySQLI :: stmt_init function ကိုမှတစ်ဆင့်သိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများကိုဘေးကင်းစွာနှင့်ထိရောက်စွာလုပ်ဆောင်နိုင်ပြီး parameter binding မှတစ်ဆင့်လုပ်ဆောင်ချက်များရရှိနိုင်ပါသည်။ ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းသည် SQL injection ကိုကာကွယ်ရုံသာမက Execution ထိရောက်မှုကိုတိုးတက်စေသည်။ ဤဆောင်းပါးသည်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများကိုလုပ်ကိုင်ရန် MySQLI extensions များကိုပိုမိုနားလည်ပြီးအသုံးပြုရန်ကူညီနိုင်သည်။