PHP တွင် MySQLI သည် MySQL ဒေတာဘေ့စ်များကိုလုပ်ကိုင်ရန်နည်းလမ်းအမျိုးမျိုးကိုထောက်ပံ့ရန်နည်းလမ်းအမျိုးမျိုးကိုထောက်ပံ့ပေးနိုင်သည်။ MySQLI :: stmt_init နှင့် bind_init နှင့် bind_param သည် preprocessing ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါအသုံးပြုသောလုပ်ဆောင်ချက်နှစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည်ဤလုပ်ဆောင်ချက်နှစ်ခုကို parameter များအတွက်မှန်ကန်စွာမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
MySQLI :: Stmtt_init သည် MySQLI အတန်းထဲတွင် mySQLI လူတန်းစားတွင်နည်းလမ်းတစ်ခုဖြစ်သည်။ ဤနည်းလမ်းသည် SQL query ကိုမလုပ်ဆောင်နိုင်ပါ။
အဆိုပါ bind_param နည်းလမ်းကိုအမှန်တကယ် parameters တွေကို preprocessing statement တစ်ခုအဖြစ်ချည်နှောင်ရန်အသုံးပြုသည်။ SQL Query များကိုကွပ်မျက်သည့်အခါဤချည်နှောင်ထားသော parameteters များသည် placeholders များကို SQL ကြေငြာချက်တွင်အစားထိုးသည်။
MySQLI :: PHP ရှိ stmt_init နှင့် bind_inam ကို အသုံးပြု. အခြေခံဖြစ်စဉ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ပါ ။ ပထမ ဦး စွာ MySQLI အတန်းမှတစ်ဆင့်ဒေတာဘေ့စ်ကိုဆက်သွယ်ရန်လိုအပ်သည်။
Preprocessing statement တစ်ခုဖန်တီးပါ ။ Proprocessing statement abder ကို stmtt_init မှတစ်ဆင့်ဖန်တီးပါ။
Bind Polametersters - သုံးစွဲသူထည့်သွင်းမှုကို preprocessing story ကို placefolder ကို placefolder သို့ချည်နှောင်ရန် Bind_param နည်းလမ်းကိုအသုံးပြုပါ။
Execution ထုတ်ပြန်ချက် - SQL မေးမြန်းမှုကိုကောင်းသော parameters များချည်နှောင်ခြင်းနှင့်အတူ Execute Execute ။
ပြုပြင်ခြင်းရလဒ်များ - စုံစမ်းမှုရလဒ်များကိုရယူပါ။
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();
?>
ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ပါ ။ ပထမ ဦး စွာ MySQLI အသစ် မှတစ်ဆင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကို ဖန်တီး. အမှားကိုင်တွယ်မှုကိုလုပ်ဆောင်ပါ။
Preprocessing statement တစ်ခုဖန်တီးပါ - Proprocessing statement object ကို $ MySQLI-> stmt_init မှတဆင့် inpection) ကိုစတင်ပါ။ အကယ်. မှားယွင်းသော ပြန်လာလျှင်၎င်းသည်စတင်ခြင်းမအောင်မြင်ပါ။
ပြင်ဆင်ရန် SQL query ကိုပြင်ဆင်ပါ ။ ပြင်ဆင်ခြင်း နည်းလမ်းမှတဆင့် SQL query ကိုပြင်ဆင်ပါ ။ placeholder သည် bind_param မှတစ်ဆင့်ချည်နှောင်ရန်စောင့်ဆိုင်းနေသည်။
bind portetleters : bind_param နည်းလမ်းသည် parameters နှစ်ခုကိုလက်ခံရရှိသည်။
ပထမ ဦး ဆုံး parameter သည်တစ်ခုချင်းစီကို parameter သည်အမျိုးအစားကိုသတ်မှတ်သော type type string ကိုဖြစ်ပါတယ်။ ဥပမာအားဖြင့် - 'i' သည် Integer အမျိုးအစားကိုကိုယ်စားပြု သည် ။
ဒုတိယနှင့်နောက်ဆက်တွဲ parametersters သည် SQL query သို့ချည်နှောင်ထားရန်အမှန်တကယ် variable များဖြစ်သည်။
Execute query : Proprocessing ထုတ်ပြန်ချက်များကို execute နည်းလမ်းကိုသုံးပါ။ SQL query ကိုဒေတာဘေ့စ်သို့ပို့လိမ့်မည်။
query query ရလဒ်များကိုရယူပါ ။ Exit_result မှတစ်ဆင့် ကွပ်မျက်ခံရ သည့်ရလဒ်ကိုရယူပါ။
အနီးကပ်ထုတ်ပြန်ချက်များနှင့်ဆက်သွယ်မှုများ - နောက်ဆုံးတွင်, စုံစမ်းမှုကိုအကောင်အထည်ဖော်ပြီးနောက်ကြေငြာချက်များနှင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုများကိုပိတ်ပါ။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် 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 များကိုချည်နှောင်ထားသည်။
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