PHP တွင် MySQLI extension သည်ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်ရန်ပိုမိုလုံခြုံပြီးပြောင်းလွယ်ပြင်လွယ်ရှိသောနည်းလမ်းဖြစ်သည်။ MySQLI :: stmt_init function သည်ပြင်ဆင်ခြင်းထုတ်ပြန်ချက်များကိုစတင်ရန်အလွန်အသုံးဝင်သောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် MySQLI :: stmt_init ကို မည်သို့အသုံးပြုရမည်ကိုလေ့လာလိမ့်မည်။
MySQLI :: Stmtt_init function ကို parameters များစွာကိုလုံခြုံစွာချည်နှောင်ထားနိုင်သည့် SQL query quertements များအတွက် preprocessing statement object တစ်ခုကိုဖန်တီးရန်အသုံးပြုနိုင်သည်။ ၎င်းသည်တိကျသောစုံစမ်းမှုဖော်ပြချက်များက SQL Injection ၏အန္တရာယ်ကိုလျော့နည်းစေသည်။
ပထမ ဦး စွာသင်သည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ထားကြောင်းသေချာပါစေ။ ဤတွင်ဒေတာဘေ့စ် connection ၏ဥပမာတစ်ခုဖြစ်သည်။
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";
// ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ
$conn = new mysqli($servername, $username, $password, $dbname);
// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
အချို့ဖြစ်ရပ်များတွင်ကျွန်ုပ်တို့သည်စုံစမ်းမှုဖော်ပြချက်အတွက်ကြိုတင်သတ်မှတ်ချက်အတွက်သတ်မှတ်ချက်များကိုမဆုံးဖြတ်နိုင်ပါ။ ဥပမာအားဖြင့်, သင်သည် query ကို dynamically တစ်ခုတည်ဆောက်လိုပြီးဝင်ငွေအချက်အလက်များအပေါ် အခြေခံ. စုံစမ်းမှုဆိုင်ရာသတ်မှတ်ချက်များလိုအပ်ကြောင်းဆုံးဖြတ်လိုသည်။
ဒီလို filter လုပ်ဖို့ parameters တွေကိုမဆိုကျွန်တော်တို့ကို filter လုပ်ဖို့မဆို dvernically ဖြတ်သန်းသွားခွင့်ပြုထားတဲ့စုံစမ်းမှုတစ်ခုဆိုပါစို့။
SELECT * FROM users WHERE name = ? AND age = ? AND city = ?
ထိုအမည် , အသက် နှင့် မြို့သည် ခြွင်းချက်စစ်ထုတ်ခြင်းနယ်ပယ်များဖြစ်သည်ကိုသင်တွေ့နိုင်သည်။
စုံစမ်းမှုကြေငြာချက်တစ်ခုတည်ဆောက်ခြင်း - ကျွန်ုပ်တို့သည်ပထမ ဦး ဆုံး SQL ထုတ်ပြန်ချက်များကိုရိုးရှင်းသောအခြေအနေများမှတစ်ဆင့်တည်ဆောက်ခြင်းဖြစ်သည်။
Bind Parametersters: ထို့နောက်ကျွန်ုပ်တို့သည် call_user_funct_funct_ariarray ကို ရှာဖွေခြင်းအတွက် dynamic parameters တွေကိုချည်နှောင်ရန်အသုံးပြုသည်။
ဤတွင်အကောင်အထည်ဖော်မှုဥပမာတစ်ခုမှာ -
<?php
// 1. တည်ဆောက် SQL စုံစမ်းမှုကြေညာချက်
$baseQuery = "SELECT * FROM users WHERE ";
$conditions = [];
$params = [];
$types = "";
// Dynamic အခြေအနေခင်းကျင်း,ကြောင်းယူဆ POST ရယူ
$filters = [
'name' => 'John',
'age' => 25,
'city' => 'New York'
];
// 根据传入的过滤条件动态生成စုံစမ်းမှုကြေညာချက်
foreach ($filters as $key => $value) {
$conditions[] = "$key = ?";
$params[] = $value;
$types .= "s"; // အခြေအနေများအားလုံးသည် string အမျိုးအစားများဖြစ်သည်ဟုယူဆပါ
}
$query = $baseQuery . implode(" AND ", $conditions);
// 2. အသုံးပြု stmt_init စုံစမ်းမှုစတင်ရန်
$stmt = $conn->stmt_init();
if ($stmt->prepare($query)) {
// 3. dynamic binding parameters တွေကို
$stmt->bind_param($types, ...$params);
// 4. တစ် ဦး စုံစမ်းမှု execute
$stmt->execute();
$result = $stmt->get_result();
// 5. ရယူ结果
while ($row = $result->fetch_assoc()) {
print_r($row);
}
// 6. ကြေငြာချက်
$stmt->close();
} else {
echo "Error: " . $stmt->error;
}
?>
Dynamically တည်ဆောက်မှုရှာဖွေမှုများ - ကျွန်ုပ်တို့သည် $ စစ်ထုတ်သည့် စစ်ဆင်ရေးများအပေါ် အခြေခံ. SQL query statements များကိုတည်ဆောက်ခြင်း, လိုအပ်မှသာအခြေအနေများထည့်သွင်းခြင်း,
Dynamic Binding Parameters: Query Parameterse ကိုချည်နှောင်ရန် bind_param () ကို သုံးပါ။ Call_user_funct_Func_array မှတဆင့် parameters တွေကိုဖြတ်သန်းသွားတယ်။
Query Execution: နောက်ဆုံးတွင် ecovere () execute () uncoure () ကိုဖြတ်ပြီး get_result () ကိုသုံးပါ။
အထက်ပါနည်းလမ်းများမှတစ်ဆင့် MySQLI :: stmt_init function တွင် dynamic parametersters ၏ပံ့ပိုးမှုများကိုကျွန်ုပ်တို့အကောင်အထည်ဖော်နိုင်သည်။ Dynamic Parameterized မေးမြန်းချက်များသည်စုံစမ်းမှု၏ပြောင်းလွယ်ပြင်လွယ်မှုများကိုတိုးမြှင့်ခြင်းသာမက SQL ဆေးထိုးခြင်းအားထိရောက်စွာကာကွယ်နိုင်ပြီး application ၏လုံခြုံရေးကိုထိရောက်စွာတားဆီးနိုင်သည်။
ကျေးဇူးပြု. မှတ်သားပါ။ အမှန်တကယ်စီမံကိန်းများတွင်အသုံးပြုသူထည့်သွင်းမှုမှ parameters တွေကိုအားလုံးသေချာစွာစစ်ဆေးပြီးမသန်စွမ်းမှုများကိုသေချာစွာစစ်ဆေးပြီးဆီးကာများကိုသေချာစွာစစ်ဆေးပါ။ SQL ထုတ်ပြန်ချက်များကိုတိုက်ရိုက်ခွဲခြားခြင်းကိုတိုက်ရိုက်ရှောင်ရှားပါ။