ဒေတာဘေ့စ်မေးမြန်းချက်များသည် PHP applications များကိုတီထွင်သည့်အခါအသုံးအများဆုံးလုပ်ငန်းများအနက်မှတစ်ခုဖြစ်သည်။ အထူးသဖြင့်ကြီးမားသောဒေတာပမာဏနှင့်ဆက်ဆံရာတွင်စုံစမ်းမှုစွမ်းအားကိုတိုးတက်အောင်မည်သို့တိုးတက်အောင်လုပ်ရမည်နည်း။ PHP တွင် MySQLI :: stmt_init သည် Database :: Stmt_init သည် Persqli :: stmt_init သည်ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုမြှင့်တင်ရန်,
ဤဆောင်းပါးသည် STMT_INIT မှတဆင့်ထိရောက်သောသော့ချက်စာလုံးကိုရှာဖွေရန်အထူးသဖြင့် SQL ရှိ သော့ချက် စာလုံးများကိုမည်သို့ရှာဖွေရမည်နည်း။
PHP တွင် MySQLI သည် MySQLI :: stmt_init method ကို preprocessing stax ်ဌာန်းချက်ကိုစတင်ရန်ထောက်ပံ့ပေးသည်။ ဆိုလိုသည်မှာ SQL Query များသည် SQL Injection ၏အန္တရာယ်ကိုရှောင်ရှားရန်နှင့် porting ကိုတားမြစ်ထားပြီးသော parameters များကွပ်မျက်ခံရလိမ့်မည်။ ကြိုတင်မဆိုကြိုတင်ဖော်ပြထားသောထုတ်ပြန်ချက်များသည်လုံခြုံရေးသာဖြစ်သည်။
$stmt = $mysqli->stmt_init();
fuzzy မေးမြန်းချက်များကိုအကောင်အထည်ဖော်ရန် သော့ချက် စာလုံးများကိုမကြာခဏအသုံးပြုလေ့ရှိသည်။ ၎င်းသည်အချို့သောပုံစံများနှင့်ကိုက်ညီသောကြိုးများကိုရှာဖွေရန်အသုံးပြုသည်။ fuzzy query တစ်ခုတွင် % သည် စာလုံး (သုညအက်ခရာသုညအပါအ 0 င ်) မည်သည့်ဇာတ်ကောင်ကိုမဆိုကိုယ်စားပြုသည်။
ဥပမာအားဖြင့်:
SELECT * FROM users WHERE username LIKE '%admin%';
ဤမေးမြန်းမှုသည်မှတ်တမ်းအားလုံးကို unctrent ပါ 0 င ်သည့် Username တွင်ပြန်ပို့လိမ့်မည်။
နောက်တစ်ခုက MySQLI :: STMT_INIT ကို ဘယ်လိုသုံးရမလဲဆိုတာကိုပြသနိုင်မယ်ဆိုတာကိုပြသနိုင်မှာပါ။ ကျွန်ုပ်တို့သည်အချက်အလက်များကိုဒေတာဘေ့စ်မှကြည့်ရှုရန်လိုသည်ဆိုပါစို့။ ရှာဖွေမှုစံသတ်မှတ်ချက်သည်အသုံးပြုသူအမည်တွင်သော့ချက်စာလုံးပါ 0 င်သည်ဆိုပါစို့။
ပထမ ဦး စွာဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်လိုအပ်သည် -
$mysqli = new mysqli("localhost", "username", "password", "database");
// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
MySQLI :: stmt_init ကို preprocessing statement object ကိုစတင်ရန်အသုံးပြုသည်။
$stmt = $mysqli->stmt_init();
ထို့နောက် fuzzy စုံစမ်းမှုအတွက် ကဲ့သို့ အသုံးပြုပါ။ ငါတို့ သုံးတယ် SQL ထိုးဆေးပြ problems နာများကိုရှောင်ရှားရန် parameters များအစား -
$sql = "SELECT * FROM users WHERE username LIKE ?";
အသုံးပြုသူမှထည့်သွင်းထားသောရှာဖွေရေးသော့ချက်စာလုံးများကိုကျွန်ုပ်တို့ချည်နှောင်ရန်လိုအပ်သည် ။ SQL ကြေငြာချက်တွင် fuzzy ပွဲစဉ်ကိုညွှန်ပြရန် % နှင့် တူသော စုံစမ်းမှုသို့ထည့်ပါ။
$searchKeyword = "%$keyword%"; // အသုံးပြုသူမှထည့်သွင်းသော့ချက်စာလုံးများ,မတိုင်မီနှင့်ပြီးနောက်ရာခိုင်နှုန်းနိမိတ်လက်ခဏာကိုထည့်ပါ
$stmt->prepare($sql);
$stmt->bind_param("s", $searchKeyword); // "s" string အမျိုးအစားကိုကိုင်တွယ်သော parameters တွေကို
ရှာဖွေမှုကိုလုပ်ဆောင်ပြီးရလဒ်ကိုရယူပါ။
$stmt->execute();
$result = $stmt->get_result();
query level (ဥပမာ ) မှတစ်ဆင့် query quert_result () မှတဆင့်လုပ်ဆောင်ပါ။
while ($row = $result->fetch_assoc()) {
echo "User ID: " . $row['id'] . " - Username: " . $row['username'] . "<br>";
}
စုံစမ်းမှုပြီးဆုံးသွားသောအခါဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပိတ်ရန်မမေ့ပါနှင့်။
$stmt->close();
$mysqli->close();
MySQLI :: stmt_init နှင့် preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် SQL ဆေးထိုးခြင်းနှင့်စုံစမ်းမှုစွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်နိုင်သည်။ အထူးသဖြင့် Fuzzy Query များ ကဲ့သို့ အသုံးပြုသောအခါကြိုတင်အသုံးချခြင်းထုတ်ပြန်ချက်များသည်အသုံးပြုသူမှထည့်သွင်းထားသောအချက်အလက်များ,
ထို့အပြင်အချို့သောအခြေအနေများတွင် မေးမြန်းချက် များသည်အလွန်အသုံးဝင်သော်လည်းအချို့သောအခြေအနေများတွင်အချက်အလက်များနှင့်ဆက်ဆံရာတွင် fuzzy မေးမြန်းချက်များသည်စွမ်းဆောင်ရည်ပြ issues နာများကိုဖြစ်ပေါ်စေနိုင်သည်။ ဒေတာဘေ့စ်အညွှန်းကိန်းသို့မဟုတ်အခြား optimization အစီအမံများမှတဆင့်စုံစမ်းမှုစွမ်းအားစွမ်းဆောင်ရည်ကိုပိုမိုတိုးတက်စေရန်စဉ်းစားရန်ဖြစ်နိုင်သည်။