PHP တွင် MySQLI extension ကိုအသုံးပြုခြင်းသည်ဒေတာဘေ့စ်နှင့် ဆက်သွယ်. မေးမြန်းချက်များကိုကွပ်ကဲသည်။ လုံခြုံရေးကိုတိုးတက်စေရန်နှင့် SQL injection ကိုကာကွယ်ရန် MySQLI သည်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုထောက်ပံ့ပေးသည်။ ဤဆောင်းပါးတွင် MySQLI :: Stmt_init function ကိုအသုံးပြုရန်နှင့် SQL preprocessing statement ကိုပြင်ဆင်ရန်နှင့် Exproade လုပ်ရန် MySQLI :: stmt_init function ကိုမည်သို့အသုံးပြုရမည်ကိုရှင်းပြပါမည်။
ကြိုတင်မဆိုထုတ်ပြန်ချက်များသည်ဒေတာဘေ့စ်အပြန်အလှန်ဆက်သွယ်မှုနည်းလမ်းဖြစ်သည်။ ၎င်းတို့သည် SQL ထုတ်ပြန်ချက်များကိုဒေတာများမှခွဲခြားနိုင်သည်။ ပထမ ဦး ဆုံး SQL query query ၏ template ကိုဒေတာဗေ့စ်သို့ပေးပို့ခြင်းနှင့်စုံစမ်းမှုအတွက် parameter တွေကို binding ။ ထိုသို့ပြုလုပ်ခြင်းသည် SQL Injection တိုက်ခိုက်မှုနှင့်လုံခြုံရေးကိုတိုးတက်စေသည်။
MySQLI :: Stmtt_init သည် MySQLI အတန်းထဲတွင် MySQLI အတန်းရှိနည်းလမ်းတစ်ခုဖြစ်သည်။ MySQLI_STMT အရာဝတ်ထုကို parameters တွေကိုချည်နှောင်ပြီး SQL Queries ကို execute လုပ်ပေးနိုင်အောင်အသုံးပြုနိုင်သည်။
MySQLI :: stmt_init function ကို သုံး. SQL Preprocessing ထုတ်ပြန်ချက်များကိုပြင်ဆင်ရန်နှင့် Execute လုပ်ရန်အဆင့်များမှာ -
ပထမ ဦး စွာ MySQL ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်လိုအပ်သည်။ ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးရန် MySQLI အတန်းကိုသုံးနိုင်သည်။
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";
// ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ
$conn = new mysqli($servername, $username, $password, $dbname);
// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($conn->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $conn->connect_error);
}
?>
MySQLI :: stmt_init function ကိုအသုံးပြုပြီး preprocessing statembert အသစ်တစ်ခုကိုစတင်ပါ။ ဤအရာဝတ်ထုကို parameters တွေကိုချည်နှောင်ခြင်းနှင့် SQL မေးမြန်းချက်များကို execute လုပ်ဖို့အသုံးပြုလိမ့်မည်။
<?php
// Preprocessing ထုတ်ပြန်ချက်များကိုအစပြု
$stmt = $conn->stmt_init();
// ကန ဦး အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if (!$stmt) {
die("Preprocessing ကြေငြာချက်စတင်ခြင်းမအောင်မြင်ပါ: " . $conn->error);
}
?>
SQL query ထုတ်ပြန်ချက်များကိုပြင်ဆင်ရန် ပြင်ဆင်သည့် နည်းလမ်းကိုသုံးပါ။ ကျွန်ုပ်တို့ရိုးရိုးရှင်းရှင်းရွေးချယ်သောစုံစမ်းမှုတစ်ခုကို execute လုပ်လိုပါကအသုံးပြုသူအချက်အလက်များကိုဒေတာဘေ့စ်မှရယူပါဆိုပါစို့။
<?php
$sql = "SELECT * FROM users WHERE email = ?";
$stmt->prepare($sql);
?>
SQL query တွင် Placeholders ( ? ) တွင် variable များကို crolles များကိုချည်နှောင်ရန် bind_param နည်းလမ်းကိုအသုံးပြုပါ။ ဤဥပမာတွင်ကျွန်ုပ်တို့သည် string type အမျိုးအစား (user's email) ၏ parameter ကိုချည်နှောင်လိမ့်မည်။
<?php
$email = "user@example.com";
$stmt->bind_param("s", $email); // "s" string ကိုအမျိုးအစားကိုကိုယ်စားပြုတယ်
?>
SQL query ကို execute လုပ်ရန် Execute နည်းလမ်းကိုသုံးပါ။
<?php
$stmt->execute();
?>
ရှာဖွေမှုကိုအောင်မြင်စွာကွပ်မျက်ခံရပြီးနောက် ရလဒ်ကို ရရှိရန် Get_result Method ကိုသုံးနိုင်သည်။
<?php
$result = $stmt->get_result();
// ရလဒ်များကိုရယူပါနှင့်သူတို့ကိုပြသပါ
while ($row = $result->fetch_assoc()) {
echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
}
?>
စုံစမ်းမှုပြီးဆုံးသွားသောအခါကြိုတင်သတ်မှတ်ထားသည့်ကြေညာချက်နှင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပိတ်ရန်သတိရပါ။
<?php
$stmt->close();
$conn->close();
?>
အထက်ပါအဆင့်များမှတစ်ဆင့် MySQLI :: stmt_init function ကို အသုံးပြု. SQL Preprocessing ဟူသောကြေညာချက်ကိုအောင်မြင်စွာပြင်ဆင်နိုင်ပြီးလုပ်ဆောင်နိုင်သည်။ Preprocessing ထုတ်ပြန်ချက်များသည် Code Security ကိုတိုးတက်စေရန်သာမက SQL Injection Attack ကိုတားဆီးနိုင်သည်,
$url = "https://api.m66.net/data"; // ဒိုမိန်းအမည်ကိုအစားထိုးပါ m66.net