PHP Development တွင် Database Access သည်အထူးသဖြင့်စီမံကိန်းတစ်ခုတွင်စီမံကိန်းတစ်ခုလိုအပ်သည့်စစ်ဆင်ရေးများစွာလိုအပ်သည့်အခါ, ဒေတာဘေ့စ်၏တည်ငြိမ်မှုနှင့်အမှားအယွင်းများသည်အထူးအရေးကြီးသည်။ MySQLI သည် PHP တွင်အသုံးများသောဒေတာဘေ့စ်တိုးချဲ့မှုဖြစ်သည်။ developer များထိရောက်သောနှင့်ယုံကြည်စိတ်ချရသောဒေတာဘေ့စ် 0 င်ရောက်ရှိမှုကိုရရှိရန်ကူညီရန်အသုံးဝင်သောလုပ်ဆောင်ချက်အချို့ကိုပေးသည်။
ဤဆောင်းပါးတွင် MySQLI_STMTT :: Database Access အလွှာ၏တည်ငြိမ်မှုကိုတိုးတက်စေရန် $ အမှား လုပ်ဆောင်ပုံကိုလေ့လာပါမည်။ MySQLI_STMT :: $ အမှား သည် MySQLI_STMT အတန်းထဲတွင်အိမ်ခြံမြေတစ်ခုဖြစ်ပြီး Proprocessing ထုတ်ပြန်ချက်များအကောင်အထည်ဖော်သည့်အခါဖြစ်ပေါ်လာသောအမှားအချက်အလက်များကိုရရှိရန်အသုံးပြုသောပစ္စည်းတစ်ခုဖြစ်သည်။ ဤပိုင်ဆိုင်မှုကိုသင့်လျော်စွာအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အမှားအယွင်းများကိုထိရောက်စွာဖမ်းယူနိုင်ပြီးဒေတာဘေ့စ် 0 င်ရောက်နိုင်သည့်အချိန်တွင်ချွင်းချက်များကိုစနစ်တကျစီမံခန့်ခွဲနိုင်ပြီးစနစ်တည်ငြိမ်မှုကိုတိုးတက်စေနိုင်သည်။
PHP တွင် MySQLI_STMT အတန်းကိုပြင်ဆင်ထားသည့်ဖော်ပြချက်များကိုပြုလုပ်ရန်အသုံးပြုသည်။ Preprocessing ထုတ်ပြန်ချက်များအားဖြင့် SQL Injection Attacks ကိုရှောင်ရှားနေစဉ်ကျွန်ုပ်တို့သည်စုံစမ်းမှု၏စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်။ MySQLI_STMT :: $ error attribute ကိုပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါအမှားအချက်အလက်များကိုရရှိရန်အသုံးပြုသည်။ အကယ်. ကွပ်မျက်သည်အောင်မြင်လျှင်၎င်းသည်အချည်းနှီးသော string ကိုပြန်ပို့သည်။ အကယ်. Execution ပျက်ကွက်ပါကအမှားအယွင်းကိုဖော်ပြသည့် string ကိုပြန်ပို့သည်။
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if ($stmt === false) {
die('ပြင်ဆင်ထားအသေအချာပေြာဆိုချက်失败: ' . $mysqli->error);
}
// parameters တွေကိုချည်ထား
$id = 1;
$stmt->bind_param("i", $id);
// 执行အသေအချာပေြာဆိုချက်
$stmt->execute();
// အမှားများကိုစစ်ဆေးပါ
if ($stmt->error) {
die('执行အသေအချာပေြာဆိုချက်失败: ' . $stmt->error);
} else {
echo "အောင်မြင်သောစုံစမ်းမှု!";
}
// 关闭အသေအချာပေြာဆိုချက်和连接
$stmt->close();
$mysqli->close();
?>
အပေါ်ကဥပမာမှာဒေတာဘေ့စ် connection ကိုပထမ ဦး ဆုံးတည်ဆောက်ပြီး SQL query တစ်ခုကိုအရင်ချမှတ်ပါ။ ထို့နောက် bind_param မှတစ်ဆင့်သတ်မှတ်ချက်များကိုချည်နှောင်ပြီးကြေညာချက်ကိုကွပ်ကဲပါ။ $ stmt-> အမှား ပိုင်ဆိုင်မှုမှတစ်ဆင့်မှာကွပ်မျက်စဉ်အမှားတစ်ခုဖြစ်ပွားခြင်းရှိမရှိစစ်ဆေးသည်။ အမှားတစ်ခုရှိပါကအမှားမက်ဆေ့ခ်ျကိုထုတ်လွှင့်ခြင်းနှင့်ကွပ်မျက်ခြင်းကိုရပ်တန့်ပါ။
MySQLI_STMT :: $ အမှားသည် SQL သတ်သေခြင်းမှအမှားများကိုဖမ်းယူနိုင်ပြီးဒေတာဘေ့စ်အမှားပေါ်ပေါက်လာသည့်အခါပရိုဂရမ်ကို crashing မှတားဆီးနိုင်သည်။ $ stmt-> အမှားသည် ဗလာကျရှိမရှိကိုဆုံးဖြတ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ပြ problem နာကိုအချိန်မီရှာဖွေတွေ့ရှိနိုင်ပြီးအမှားကိုဆက်လက်မပြန့်ပွားစေရန်ကာကွယ်ရန်အချက်များပေးနိုင်သည်။
<?php
$stmt = $mysqli->prepare("UPDATE users SET name = ? WHERE id = ?");
if ($stmt === false) {
die("ပြင်ဆင်ထားအသေအချာပေြာဆိုချက်失败: " . $mysqli->error);
}
// အမှားတစ်ခုပုံဖော်ပါ
$name = 'John Doe';
$id = 'invalid_id'; // ဒီမှာယူဆတယ် ID အားမရှိသော
$stmt->bind_param("si", $name, $id);
$stmt->execute();
// ကွပ်မျက်အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($stmt->error) {
die("အသစ်ပြောင်းခြင်းမအောင်မြင်ပါ: " . $stmt->error);
}
echo "အောင်မြင်စွာအသစ်ပြောင်းခြင်း!";
?>
ဤကုဒ်တွင် SQL အမှားတစ်ခုဖြစ်ပါကသို့မဟုတ်ကွပ်မျက်မှုမအောင်မြင်ပါကဒေတာဘေ့စ်လည်ပတ်မှုပျက်ကွက်ခြင်းကြောင့်ပရိုဂရမ်ပျက်ခြင်းမရှိသေးပါ။
MySQLI_STMT :: $ အမှားသည် ဒေတာဘေ့စ်ဆက်သွယ်မှုတည်ငြိမ်မှုကိုတိုးတက်စေနိုင်သည်။ ဥပမာအားဖြင့်, database တစ်ခုဝင်ရောက်လာသောအခါဆက်သွယ်မှုအမှားများသည်သာမန်ခြွင်းချက်များဖြစ်သည်။ MySQLI_STMT :: $ အမှားသည် လုပ်ဆောင်မှုပျက်ကွက်မှုကြောင့်နောက်ဆက်တွဲစစ်ဆင်ရေးများကိုရှောင်ရှားနိုင်ရန်အတွက်ဒေတာဘေ့စ်ဆက်သွယ်မှုအခြေအနေကိုအချိန်မီစစ်ဆေးနိုင်သည်။
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ时အမှားများကိုစစ်ဆေးပါ
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
// ဒေတာဘေ့စ်စုံစမ်းမှုကို execute လုပ်ပါ
$query = "SELECT * FROM non_existent_table";
$result = $mysqli->query($query);
// စုံစမ်းမှုကွပ်မျက်အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if (!$result) {
die("စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error);
}
while ($row = $result->fetch_assoc()) {
echo "အသုံးပြုသူ: " . $row['name'];
}
$mysqli->close();
?>
ဤဥပမာတွင်ကျွန်ုပ်တို့သည်စုံစမ်းမှုမရှိသေးသည့်ဇယားကိုတမင်တကာလုပ်ဆောင်သည်။ $ MySQLI-> အမှား နှင့် အမှားအယွင်းများကို စစ်ဆေးခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အမှားအယွင်းများကိုအချိန်မီအမှားများကိုဖမ်းယူနိုင်ပြီးအစီအစဉ်ကိုမမှန်ကန်သောစစ်ဆင်ရေးများဆက်လက်လုပ်ဆောင်ခြင်းကိုတားဆီးနိုင်သည်။
Front End တွင်အမှားအယွင်းများပြသသည့်အပြင် developer များသည်လည်းအနာဂတ်ပြ troubl နာဖြေရှင်းခြင်းနှင့်စောင့်ကြည့်လေ့လာခြင်းကိုလွယ်ကူချောမွေ့စေရန် Log ရှိအမှားအယွင်းများကိုမှတ်တမ်းတင်နိုင်သည်။ MySQLI_STMT :: developer များကခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ဆုံးဖြတ်ချက်အတွက် $ error ကို $ for error မှတဆင့်ရရှိသောအမှားအချက်အလက်များကိုမှတ်တမ်းဖိုင်သို့ရေးသားနိုင်သည်။
<?php
// စုံစမ်းမှုလုပ်ဆောင်သော code သည်အရင်ကဲ့သို့တူညီသောဖြစ်သည်ဟုယူဆပါ
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
// အမှားများကိုစစ်ဆေးပါ并သစ်ခုတ်
if ($stmt->error) {
// သစ်ခုတ်
error_log("စုံစမ်းမှုမအောင်မြင်ပါ: " . $stmt->error, 3, '/path/to/error.log');
die("အမှားတစ်ခုဖြစ်ပွားခဲ့သည်,ကျေးဇူးပြု. နောက်မှထပ်ကြိုးစားပါ。");
}
?>
ဤနည်းအားဖြင့်အမှားအယွင်းများကို log file သို့စာဖြင့်ရေးသားလိမ့်မည်။
MySQLI_STMT :: $ အမှား သည် PHP တွင် PHP တွင်အလွန်လက်တွေ့ကျသောပိုင်ဆိုင်မှုတစ်ခုဖြစ်သည်။ ဤ attribute ကိုဆင်ခြင်တုံတရားဖြင့်အသုံးချခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်ဝင်ရောက်လာသောအလွှာ၏တည်ငြိမ်မှုကိုမြှင့်တင်ပေးရုံသာမကလျှောက်လွှာ၏ကြံ့ခိုင်မှုကိုမြှင့်တင်ပေးနိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်လုပ်ငန်းများတည်ငြိမ်မှုကိုသေချာစေရန်အလွန်အရေးကြီးသည်။