PHP တွင် MySQLI_STMTT :: __ အသုံးပြုခြင်းဆိုင်ရာတည်ဆောက်သူ တည်ဆောက်ခြင်းသည်ကြိုတင်ပြင်ဆင်ထားသည့်ကြေညာချက်အရာဝတ်ထုတစ်ခုကိုဖန်တီးနိုင်သည်။ ဤဆောင်းပါးသည် MySQLI_STMTT :: __ တည်ဆောက်ခြင်း နှင့်သက်ဆိုင်သည့်နည်းစနစ်များနှင့်သက်ဆိုင်သောစွမ်းဆောင်ရည်နှင့်လုံခြုံရေးကိုပိုမိုကောင်းမွန်စေရန်ရှုပ်ထွေးသော SQL Ql Questies ရှိလက်တွေ့ကျသောနည်းစနစ်များနှင့် application များကိုအကောင်အထည်ဖော်ရန်နှင့်သက်ဆိုင်သည်။
MySQLI_STMT :: __ တည်ဆောက်မှုကို ကြိုတင်သတ်မှတ်ထားသည့်ကြေညာချက်အရာဝတ်ထုကိုစတင်ရန်အသုံးပြုသည်။ ၎င်း၏ဆောက်လုပ်ရေးကိုအောက်ပါအတိုင်းသတ်မှတ်ထားသည် -
public mysqli_stmt::__construct(mysqli $mysql, string $query)
$ MySQL : MySQLI Connection Object
$ Queration : များသောအားဖြင့် Placeholders နှင့်အတူ SQL query station ်ဌာန်း
ခေါ်ယူပြီးနောက် MySQLI_STMT အရာဝတ်ထုကိုပြန်လည်ပေးပို့လိမ့်မည်။
SQL ဆေးထိုးခြင်းကိုတားဆီးပါ ။
စွမ်းဆောင်ရည်တိုးတက်စေရန်အတွက် Preprocessing ထုတ်ပြန်ကြေငြာချက်သည် SQL parsing overhead ကိုလျှော့ချရန်။
ရှင်းလင်းသောယုတ္တိဗေဒ - စနစ်တကျ SQL နှင့် parameter sexation, code ကိုထိန်းသိမ်းရန်ပိုမိုလွယ်ကူစေရန်။
parameter သည်အမျိုးအစားများကိုထောက်ပံ့သည် - ပြောင်းလွယ်ပြင်လွယ်တိုးတက်စေရန်မတူညီသောဒေတာအမျိုးအစားများကို dynamically dynamically bind ။
ကျွန်ုပ်တို့တွင်ရှုပ်ထွေးသော SQL query တွင်စားပွဲ၌ပါ 0 င်သည်,
$mysqli = new mysqli("gitbox.net", "user", "password", "database");
$sql = "
SELECT u.id, u.username, p.title, p.created_at
FROM users u
JOIN posts p ON u.id = p.user_id
WHERE u.status = ? AND p.created_at > ? AND p.category IN (?, ?, ?)
ORDER BY p.created_at DESC
LIMIT ?
";
$stmt = new mysqli_stmt($mysqli, $sql);
// parameters တွေကိုချည်ထား:s = string, i = integer
// Parameter သည်အမိန့်နှင့်ကိုက်ညီသည်SQLနေရာချထားသူ:u.status (string), p.created_at (stringနေ့စဲှ), p.category (3တစ် ဦး က string ကို), limit (int)
$status = 'active';
$date = '2024-01-01';
$cat1 = 'tech';
$cat2 = 'news';
$cat3 = 'life';
$limit = 10;
$stmt->bind_param("ssssssi", $status, $date, $cat1, $cat2, $cat3, $limit);
// တစ် ဦး စုံစမ်းမှု execute
$stmt->execute();
// ရလဒ်များကိုရယူပါ
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row['username'] . " - " . $row['title'] . " (" . $row['created_at'] . ")\n";
}
MySQLI_STMT သည် တိုက်ရိုက်စည်းနှောင်ထားသောခင်းကျင်းအမျိုးအစား parameters များကိုမထောက်ပံ့ပါ။ ကြေငြာချက်တွင်ပါ 0 င်သောပြောင်းလဲမှုများကိုပြောင်းလဲခြင်းသည်ပြောင်းလဲခြင်းကိုပြောင်းလဲရန်လိုအပ်ပါက placeholders များကို dynamically လုပ်ရန်လိုအပ်သည်။
$categories = ['tech', 'news', 'life', 'sports'];
$placeholders = implode(',', array_fill(0, count($categories), '?'));
$sql = "
SELECT * FROM posts
WHERE category IN ($placeholders)
";
$stmt = new mysqli_stmt($mysqli, $sql);
// dynamicy အမျိုးအစား strings ထုတ်ပေး,အားလုံး string ကိုအမျိုးအစားများဖြစ်ကြသည်
$types = str_repeat('s', count($categories));
// အသုံးပြု“ရည်ညွှန်းခေါ်ဆိုမှု”parameters တွေကိုချည်ထား
$stmt->bind_param($types, ...$categories);
$stmt->execute();
$result = $stmt->get_result();
ဤနည်းလမ်းသည်အခြေအနေသတ်မှတ်ချက်များအရေအတွက်ကိုမသတ်မှတ်ထားသည့်အခြေအနေကိုမဖြေရှင်းနိုင်သောအခြေအနေကိုပြောင်းလဲစေနိုင်သည်။
MySQLI_STMT :: __ မအောင်မြင်သောအခါ, ကျွန်ုပ်သည်မအောင်မြင်ပါ က $ MySQLI-> အမှား နှင့် $ stmt-> အမှား မှတဆင့်အသေးစိတ်အချက်အလက်များကိုသင်ရရှိနိုင်သည်။
if (!$stmt) {
die("Preprocessing Statement ဖန်တီးမှုမအောင်မြင်ပါ: " . $mysqli->error);
}
if (!$stmt->execute()) {
die("Execution မအောင်မြင်ပါ: " . $stmt->error);
}
ထို့အပြင် MySQLI debugging function ကို enable:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
ရှုပ်ထွေးသော SQL တွင်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်ကူညီသည်။
ရှုပ်ထွေးသော SQL Queries တွင်အထူးသဖြင့်ထုတ်ပြန်ချက်များစွာကိုအသစ်ပြောင်းခြင်းသို့မဟုတ်မေးမြန်းခြင်းများကိုပြုလုပ်သောအခါအရောင်းအ 0 ယ်များနှင့်ပေါင်းစပ်ခြင်းအားဖြင့်ဆွဲဆောင်နိုင်သည့်နည်းလမ်းတစ်ခုဖြစ်သည်။
$mysqli->begin_transaction();
try {
$stmt1 = new mysqli_stmt($mysqli, "UPDATE accounts SET balance = balance - ? WHERE id = ?");
$stmt1->bind_param("di", $amount, $from_id);
$stmt1->execute();
$stmt2 = new mysqli_stmt($mysqli, "UPDATE accounts SET balance = balance + ? WHERE id = ?");
$stmt2->bind_param("di", $amount, $to_id);
$stmt2->execute();
$mysqli->commit();
} catch (Exception $e) {
$mysqli->rollback();
echo "ငွေပေးငွေယူပျက်ကွက်: " . $e->getMessage();
}
MySQLI_STMMT :: __ တည်ဆောက်ခြင်း ကို အသုံးပြု. ကြိုတင်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုတည်ဆောက်ခြင်းသည်ရှုပ်ထွေးသော SQL Queries များကိုဖျော်ဖြေရန်အတွက်အကောင်းဆုံးအလေ့အကျင့်တစ်ခုဖြစ်သည်။
parameters များနှင့် dynametically dynametically dynametically တည်ဆောက်ခြင်းနှင့် dynamically တည်ဆောက်ခြင်းအားဖြင့်, သင်သည်အခြေအနေအမျိုးမျိုးနှင့်ပြောင်းလဲနေသော parametersters ကိုကိုင်တွယ်နိုင်ပါတယ်။
အမှားကိုင်တွယ်ခြင်းနှင့်ငွေပေးငွေယူစီမံခန့်ခွဲမှုပေါင်းစပ်ခြင်းအားဖြင့်ကြံ့ခိုင်ကုဒ်နှင့်ဒေတာလုံခြုံရေးကိုသေချာစေသည်။
ရှုပ်ထွေးသော SQL တွင်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်အတွက် MySQLI debugging ကိုဖွင့်ပါ။
အထက်ပါကျွမ်းကျင်မှုများကျွမ်းကျင်မှုသည် PHP developer များထံမှရှုပ်ထွေးသောဒေတာဘေ့စ်လုပ်ငန်းများကိုထိရောက်စွာနှင့်လုံခြုံစွာကိုင်တွယ်နိုင်သည်။