PHP တွင် MySQLI :: stmt_init သည် MySQLI_STMT အရာဝတ်ထုအသစ်ကို အစပြု. အဓိကအသုံးပြုသော MySQLI extension တွင် function တစ်ခုဖြစ်သည်။ ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုကွပ်မျက်ရန်အလွန်အရေးကြီးသည်။ Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းအားဖြင့် SQL Injection ကဲ့သို့သောလုံခြုံရေးဆိုင်ရာကိစ္စရပ်များကိုရှောင်ရှားနိုင်ပြီးဒေတာဘေ့စ်မေးမြန်းချက်များ၏ထိရောက်မှုကိုတိုးတက်စေသည်။
MVC ဗိသုကာများတွင်ဒေတာဘေ့စ်လုပ်ငန်းများကိုပုံမှန်အားဖြင့်မော်ဒယ်အလွှာတွင်တည်ရှိသည်။ အချက်အလက်များကိုရယူခြင်းနှင့်သိုလှောင်မှုကိုရယူရန်အတွက်တာ 0 န်ရှိသည်။ ကျွန်ုပ်တို့၏ကိစ္စတွင် MySQLI :: :: Myanmar Layer တွင်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် STMT_INIT ကို အသုံးပြုမည်။
ကျွန်ုပ်တို့တွင်ရိုးရိုးရှင်းရှင်းအသုံးပြုသူစီမံခန့်ခွဲမှုစနစ်ရှိသည်ဆိုပါစို့။ အသုံးပြုသူအချက်အလက်များကိုဒေတာဘေ့စ်သို့ထည့်သွင်းလိုပါက ကျွန်ုပ်တို့၏ဒေတာဘေ့စ်စားပွဲခုံဖွဲ့စည်းပုံမှာအောက်ပါအတိုင်းဖြစ်သည် -
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL
);
အသုံးပြုသူအချက်အလက်များကိုထည့်သွင်းစဉ်းစားရန် မော်ဒယ် အလွှာရှိနည်းလမ်းတစ်ခုကိုကျွန်ုပ်တို့ဖန်တီးပါမည်။
ပထမ ဦး စွာဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်ဒေတာဘေ့စ်ဆက်သွယ်မှုအတန်းကိုဖန်တီးရန်လိုအပ်သည်။ ဒေတာဘေ့စ် connection အချက်အလက်များကိုသီးခြားအတန်းထဲတွင်သိမ်းဆည်းထားပါသည်။
class Database {
private $host = 'localhost';
private $username = 'root';
private $password = '';
private $database = 'test_db';
public $conn;
public function __construct() {
$this->conn = new mysqli($this->host, $this->username, $this->password, $this->database);
if ($this->conn->connect_error) {
die("Connection failed: " . $this->conn->connect_error);
}
}
}
ထို့နောက်အသုံးပြုသူနှင့်သက်ဆိုင်သောဒေတာဘေ့စ်လုပ်ငန်းများကိုကိုင်တွယ်သော Usermodel အတန်းကိုကျွန်ုပ်တို့ဖန်တီးသည်။ Preprocessing Stata ကိုစတင်ရန်နှင့်အသုံးပြုသူအချက်အလက်များကိုစတင်ရန် MySQLI :: stmt_init function ကိုသုံးပါမည်။
class UserModel {
private $db;
public function __construct() {
$this->db = new Database();
}
public function addUser($username, $email) {
// Initialization ပြင်ဆင်မှုကြေညာချက်
$stmt = $this->db->conn->stmt_init();
// ပြင်ဆင်မှုကြေညာချက်အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($stmt->prepare("INSERT INTO users (username, email) VALUES (?, ?)")) {
// parameters တွေကိုချည်ထား
$stmt->bind_param("ss", $username, $email);
// Execution ကြေငြာချက်
if ($stmt->execute()) {
echo "User added successfully!";
} else {
echo "Error: " . $stmt->error;
}
// ကြေငြာချက်
$stmt->close();
} else {
echo "Prepare failed: " . $this->db->conn->error;
}
}
}
Controller အလွှာတွင် USERMODED လူတန်းစားနည်းလမ်းကိုခေါ်ဆိုခြင်းဖြင့်ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်သည်။ ကျွန်ုပ်တို့သည်အသုံးပြုသူမှထည့်သွင်းထားသောအချက်အလက်များကိုယူပြီး Adduser Method သို့ကူးသွားပါမည်။
class UserController {
private $model;
public function __construct() {
$this->model = new UserModel();
}
public function createUser($username, $email) {
// တယ်လီဖုန်းဆက်ခြင်း UserModel Class ၏နည်းလမ်းများအသုံးပြုသူအချက်အလက်များကိုထည့်ပါ
$this->model->addUser($username, $email);
}
}
နောက်ဆုံးအနေဖြင့်ရှေ့တွင်စာမျက်နှာတွင်အသုံးပြုသူများသည်ဒေတာများကို 0 င်ရန်ရိုးရှင်းသောပုံစံကိုပေးသည်။ ပုံစံဒေတာကိုဒေတာတွင်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် Controller Layer မှတစ်ဆင့်ပုံစံသို့တင်ပြလိမ့်မည်။
<form method="POST" action="create_user.php">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<button type="submit">Create User</button>
</form>
Create_user.php ဖိုင်တွင်အသုံးပြုသူကို Controller မှတဆင့်ဖန်တီးသည်။
include 'UserController.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$email = $_POST['email'];
$controller = new UserController();
$controller->createUser($username, $email);
}
MVC ဗိသုကာတွင်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် MySQLI :: stmt_init function ကိုမှန်ကန်စွာအသုံးပြုခြင်းသည်ကုဒ်၏လုံခြုံရေးနှင့်ထိရောက်မှုကိုတိုးတက်စေသည်။ Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းအားဖြင့် SQL Injection ၏အန္တရာယ်ကိုရှောင်ရှားပြီးကုဒ်သည်ရှင်းလင်းစွာထိန်းသိမ်းရန်ပိုမိုလွယ်ကူသည်။ ဤဥပမာတွင် Model အလွှာတွင်ဒေတာဘေ့စ်လုပ်ငန်းများကိုကျွန်ုပ်တို့ encapsulate leadser layer တစ်ခုချင်းစီ၏တာ 0 န် 0 တ္တရားများကိုခွဲခြားရန်အတွက်ရှေ့တန်းနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းအတွက်တာဝန်ရှိသည်။
ဤနည်းအားဖြင့်သင်သည်ဒေတာဘေ့စ်လုပ်ငန်းများကို MVC ဗိသုကာတွင်လျောက်ပတ်စွာကိုင်တွယ်နိုင်ပြီးအနာဂတ်တိုးချဲ့ရန်အတွက်ကောင်းမွန်သောအခြေခံအုတ်မြစ်တစ်ခုပေးနိုင်သည်။