PHP တွင် MySQLI extension သည်ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်ရန်နည်းလမ်းများစွာရှိသည်။ ၎င်းတို့အနက် MySQLI :: stmt_init function သည်ကြိုတင်ပြင်ဆင်ထားသည့်ကြေညာချက်ကိုအစပြုရန်အသုံးပြုနိုင်သည့်အလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်နှင့်အတူသိမ်းဆည်းထားသောလုပ်ထုံးလုပ်နည်းများကိုပိုမိုလုံခြုံစွာနှင့်ထိရောက်စွာလုပ်ဆောင်နိုင်ပြီးပြန်လည်ရောက်ရှိသောရလဒ်များကိုလုပ်ဆောင်နိုင်ပြီးပြန်လည်ရရှိနိုင်ပါသည်။ ဤဆောင်းပါးသည်သိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများကိုလုပ်ဆောင်ရန်နှင့်လုပ်ငန်းစဉ်ရလဒ်များကိုလုပ်ဆောင်ရန် MySQLI :: stmt_init ကို မည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
ပထမ ဦး စွာသင်၏ဒေတာဘေ့စ်သည်သိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများကိုဖန်တီးထားကြောင်းသေချာပါစေ။ ကျွန်ုပ်တို့တွင် 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 ;
PHP တွင် MySQLI :: stmt_init ကို အသုံးပြု. ကြေငြာချက်တစ်ခုအစပြုရန်နှင့်ထိုအရာဝတ်ထုမှတစ်ဆင့်သိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများကိုအကောင်အထည်ဖော်ရန်ကျွန်ုပ်တို့အသုံးပြုမည်။
ပထမ ဦး စွာ 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);
}
?>
MySQLI :: stmt_init function ကို MySQLI_STMT အရာဝတ်ထုကိုအစပြုရန်အသုံးပြုသည်။ ဤဥပမာတွင် Get_user_info သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းကို execute လုပ်ရန်ကြေငြာချက်တစ်ခုကိုကျွန်ုပ်တို့စတင်ပါလိမ့်မည်။
<?php
// ကြေညာချက်အရာဝတ်ထုကိုအစပျိုး
$stmt = $mysqli->stmt_init();
// ကန ဦး အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if (!$stmt) {
die('ထုတ်ပြန်ချက်များကို အစပြု. မရပါ: ' . $mysqli->error);
}
?>
ဖော်ပြချက်အရာဝတ်ထုကိုအစပြုသည်နှင့်တပြိုင်နက်ကျွန်ုပ်တို့သည်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်း၏ 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);
}
?>
သိမ်းပိုက်ထားသောလုပ်ထုံးလုပ်နည်းကိုကွပ်မျက်ခံရပြီးနောက်ရလဒ်ကိုများသောအားဖြင့်ပြန်ပို့သည်။ ဤနေရာတွင်ကျွန်ုပ်တို့သည် 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 "သက်ဆိုင်ရာမှတ်တမ်းများမရှိပါ";
}
?>
နောက်ဆုံးအနေဖြင့်ဖော်ပြချက်နှင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပိတ်ရန်မမေ့ပါနှင့်။
<?php
$stmt->close();
$mysqli->close();
?>
ထုတ်လုပ်မှုပတ်ဝန်းကျင်တွင်သင့်လျော်သောအမှားကိုင်တွယ်မှုသေချာစေရန်အရေးကြီးသည်။ ပြင်ဆင်ခြင်း , execute နှင့် get_resulat methods ၏ပြန်လာတန်ဖိုးများကိုစစ်ဆေးခြင်းအားဖြင့်သင်သည်အမှားကိုဖမ်းမိနိုင်သည်။ ထို့အပြင်အမှားတစ်ခုဖြစ်သည့်အခါတွင်ပရိုဂရမ်ကိုမည်သည့်အချိန်၌မဆိုပရိုဂရမ်မှထွက်ပေါ်လာနိုင်ရန်အတွက်ခြွင်းချက်များကိုဖမ်း ရန်ကြိုးစားခြင်းကိုဖမ်းမိ နိုင်သည်။
MySQLI :: stmt_init function ကိုမှတစ်ဆင့်သိုလှောင်ထားသောလုပ်ထုံးလုပ်နည်းများကိုဘေးကင်းစွာနှင့်ထိရောက်စွာလုပ်ဆောင်နိုင်ပြီး parameter binding မှတစ်ဆင့်လုပ်ဆောင်ချက်များရရှိနိုင်ပါသည်။ ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းသည် SQL injection ကိုကာကွယ်ရုံသာမက Execution ထိရောက်မှုကိုတိုးတက်စေသည်။ ဤဆောင်းပါးသည်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများကိုလုပ်ကိုင်ရန် MySQLI extensions များကိုပိုမိုနားလည်ပြီးအသုံးပြုရန်ကူညီနိုင်သည်။