ဒေတာသွင်းစစ်ဆင်ရေးအမြောက်အများကိုပြုပြင်သည့်အခါ၎င်းသည် ထည့်သွင်းထားသော ထုတ်ပြန်ချက်များမှတစ်ဆင့် loop ကို loop အထိထိရောက်မှုနည်းသည်။ စွမ်းဆောင်ရည်တိုးတက်စေရန် MySQLI :: STMT_INIT သည် bind_param နှင့်ပေါင်းစပ်ပြီး bind_param နှင့်ပေါင်းစပ်ပြီး preprocessed ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်ရန်အတွက်အသုံးပြုနိုင်သည်။ ဤဆောင်းပါးသည်ဤစစ်ဆင်ရေးကိုဥပမာများမှတဆင့်မည်သို့ထိရောက်စွာလုပ်ဆောင်ရမည်ကိုရှင်းပြပါမည်။
ပြင်ဆင်ရန် + bind_param ကို အသုံးပြုခြင်းသည်ရိုးရာ string splicing နည်းလမ်းထက်ပိုမိုလုံခြုံသည်။ ၎င်း၏အားသာချက်များတွင်:
SQL Injection ကိုရှောင်ပါ။
ကွပ်မျက်ခြင်းထိရောက်မှုကိုတိုးတက်စေရန် SQL ၏ထပ်ခါတလဲလဲစုစည်းခြင်းကိုရှောင်ပါ။
ကောင်းသောဖတ်နိုင်မှုနှင့်ရှင်းလင်းသောဖွဲ့စည်းပုံ။
ကျွန်ုပ်တို့သည်ရိုးရှင်းသောအသုံးပြုသူသတင်းအချက်အလက်စားပွဲ၌ အသုံးပြုသူများကို ဥပမာတစ်ခုအဖြစ်ယူပြီး၎င်း၏ဖွဲ့စည်းပုံမှာအောက်ပါအတိုင်းဖြစ်သည် -
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
အသုံးပြုသူမှတ်တမ်းများစွာကိုဖြည့်ဆည်းရန်လိုသည်ဟုဆိုပါစို့။
<?php
// ဒေတာဘေ့စ် connection configuration ကို
$mysqli = new mysqli("localhost", "db_user", "db_pass", "db_name");
// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($mysqli->connect_errno) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
// ကြေညာချက်အရာဝတ်ထုကိုအစပျိုး
$stmt = $mysqli->stmt_init();
// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
$sql = "INSERT INTO users (username, email) VALUES (?, ?)";
if (!$stmt->prepare($sql)) {
die("Preprocessing မအောင်မြင်ပါ: " . $stmt->error);
}
// parameters တွေကိုချည်ထား(variable တွေကိုကိုးကားကြောင်းသတိပြုပါ)
$stmt->bind_param("ss", $username, $email);
// ဖြည့်စွက်ခံရဖို့ဒေတာကိုတုပ
$data = [
["alice", "alice@m66.net"],
["bob", "bob@m66.net"],
["charlie", "charlie@m66.net"]
];
// အသုတ်သွင်းလုပ်ဆောင်ပါ
foreach ($data as $row) {
$username = $row[0];
$email = $row[1];
if (!$stmt->execute()) {
echo "မအောင်မြင်ပါ: " . $stmt->error . "<br>";
}
}
$stmt->close();
$mysqli->close();
?>
$ MySQLI-> ပြင်ဆင်ရန် () အတိုကောက်ကိုတိုက်ရိုက်သုံးနိုင်ပေမယ့်ရှုပ်ထွေးသောသို့မဟုတ်ကြီးမားသောစီမံကိန်းများအတွက်ပိုမိုသင့်တော်သောဖြစ်စဉ်ကိုအတိအလင်းဖော်ပြရန် stmt_init ကို သုံးပါ။
Bind_param သည် variable ကိုရည်ညွှန်းသည်။ ထို့ကြောင့် variable ၏တန်ဖိုးကိုကွင်းဆက်တွင်ပြောင်းလဲနိုင်သည်။
Execute တစ်ခုချင်းစီပြီးနောက်ပြန်ပို့ခြင်းကိုစစ်ဆေးခြင်း () သည် ထည့်သွင်းရန်ပျက်ကွက်ခြင်းမအောင်မြင်ပါ။
Batch တင်ပြချက် - ဒေတာထည့်သွင်းမှုအမြောက်အများအတွက်၎င်းကိုအသုတ် (ပစ္စည်းများ 1000 တွင်အုပ်စုတစ်စုကဲ့သို့) အသုတ်များတွင်ပြုလုပ်နိုင်သည်။
အလိုအလျောက်ကျူးလွန်သော ( $ MySQLI-> Autocommit (fallocommit) ) ကိုပိတ်ပါ။
Multi-valued Instrustial syntax (သို့) (... ), (... ), (... ), (... ),
MySQLI :: stmt_init နှင့် bind_param () bind_param ကို အသုံးပြုခြင်းသည်အသုတ်သွင်း၏ထိရောက်မှုကိုတိုးတက်စေရုံသာမကလျှောက်လွှာ၏လုံခြုံရေးနှင့်ထိန်းသိမ်းမှုကိုလည်းမြှင့်တင်ပေးနိုင်သည်။ အသုံးပြုသူအချက်အလက်များသို့မဟုတ်သစ်ထုတ်လုပ်ခြင်းကဲ့သို့သောအခြေအနေများနှင့်ဆက်ဆံရာတွင်ဤနည်းလမ်းကိုအထူးအကြံပြုလိုသည်။