ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ၏ MySQLI extension ကိုအသုံးပြုသောအခါ, အကယ်. ဤသတိပေးချက်များသည်အထူးသဖြင့်အစားထိုးခြင်း, ပုံမှန်တန်ဖိုးများ, ပုံမှန်တန်ဖိုးများ, query query () query () query () query () query query (mySqli :: mySqli :: mySqli :: get_warenings () get_warenings () ကိုပေါင်းစပ်ထားနိုင်လိမ့်မည်။
ဤကဲ့သို့သော SQL တစ်ခုကိုစဉ်းစားပါ။
$sql = "INSERT INTO users (username, email) VALUES ('this_is_a_very_long_username_that_will_be_truncated', '[email protected]')";
Username Field ၏အများဆုံးအရှည်မှာစာလုံးရေ 30 ဖြစ်ပြီးအထက်ဖော်ပြပါ SQL ၏အမှန်တကယ်ကွပ်ကဲခြင်းကိုဖြတ်တောက်လိမ့်မည်ဟုယူဆသည်။ အမှားမရှိချေရှိသော်လည်း သတိပေးချက် ထုတ်ပေးလိမ့်မည်။ ၎င်းကိုကျွန်ုပ်တို့လျစ်လျူရှုပါကသင်မသိဘဲအချက်အလက်များကိုတိတ်တဆိတ် "လုပ်ဆောင်" သည်။
MySQLI :: Get_warenings () သည်ယခင်စစ်ဆင်ရေးမှ SQL ၏သတိပေးသတင်းအချက်အလက်ရရှိရန်အသုံးပြုသောနည်းလမ်းဖြစ်သည်။ ၎င်းသည်သတိပေးအဆင့်များ, ကုဒ်များနှင့်မက်ဆေ့ခ်ျများကို debug သို့မဟုတ် log လုပ်ရန်အသုံးပြုနိုင်သောအရာဝတ်ထုတစ်ခုကိုပြန်ပို့သည်။
အခြေခံအသုံးပြုမှုကိုနားလည်ရန်အနည်းဆုံးပုံသက်သေကို ဦး စွာကြည့်ကြပါစို့။
<?php
$mysqli = new mysqli("localhost", "user", "password", "test");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
$sql = "INSERT INTO demo (name) VALUES ('ရှည်လျားသော strings အပြင်းအထန်ကြိုးပမ်းမှုများကိုသတိပေးအပိုရှည်သော string triggers များသည်အပိုရှည်ကြိုးအစပျိုးသတိပေးသတိပေး')";
if ($mysqli->query($sql)) {
echo "အောင်မြင်စွာထည့်ပါ\n";
// သတိပေးချက်များကိုစစ်ဆေးပါ
$warning = $mysqli->get_warnings();
while ($warning) {
echo "အသိပေး: [{$warning->errno}] {$warning->message}\n";
$warning = $warning->next();
}
} else {
echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
}
$mysqli->close();
အမှန်တကယ်စီမံကိန်းများအနေဖြင့်အသုံးပြုသူအားတိုက်ရိုက်သတိပေးချက်များကိုတိုက်ရိုက်ထုတ်လွှင့်ရန်မလိုအပ်ပါ, ဥပမာအားဖြင့်:
function log_warnings($mysqli) {
$warning = $mysqli->get_warnings();
while ($warning) {
error_log("SQL Warning [{$warning->errno}]: {$warning->message}");
$warning = $warning->next();
}
}
$sql = "UPDATE users SET username='အလွန်အကျွံရှည်လျားသောအမည်များကိုပယ်ဖြတ်လိမ့်မည်' WHERE id=1";
if ($mysqli->query($sql)) {
log_warnings($mysqli);
} else {
error_log("SQL Error: " . $mysqli->error);
}
logging logging logging logging လုပ်ခြင်းသည်ပြ problems နာများကိုဖြေရှင်းရန်သာမကစာမေးပွဲဝန်းကျင်တွင် SQL အရည်အသွေးနှင့် ပတ်သက်. တုံ့ပြန်ချက်များကိုလည်းထောက်ပံ့ပေးသည်။
Get_warenings () နောက်ဆုံးမေးမြန်းမှုအတွက်သာအလုပ်လုပ်သည်။
၎င်းသည်ဆက်နွယ်သောစာရင်းနှင့်တူသောအရာဝတ်ထုတစ်ခုကို လာမည့် () ဖြင့်ဖြတ်သန်းသွားသည်။
ယာဉ်မောင်းအားလုံးသည်သတိပေးချက်များကိုအပြည့်အဝထောက်ခံမှုနှင့်ဒေတာဘေ့စ်ဖွဲ့စည်းမှုကိုအသုံးမပြုမီစမ်းသပ်ရန်လိုအပ်သည်။
MySQLI_REPORE () Get_warenings () ကို အစားထိုးလို့မရဘူး,
Parameters များပြုလုပ်သောအခါသူတို့လုပ်သည့်အတွက်သတိပေးချက်များကိုပြင်ဆင်ရန်နှင့်သတိပေးချက်များကိုပြင်ဆင်ရန် ပြင်ဆင်ပါ ။
Database Assistant Class ကို encapsulating လုပ်ခြင်းဖြင့်ပြုလုပ်နိုင်သည့်ထုတ်လုပ်မှုတွင်သတိပေးချက်များကိုသတိပေးချက်များကိုအကျဉ်းချုပ်ဖော်ပြရန်လိုကောင်းလိုပေမည်။
class DB {
protected $mysqli;
public function __construct() {
$this->mysqli = new mysqli("localhost", "user", "password", "appdb");
}
public function query($sql) {
$result = $this->mysqli->query($sql);
if ($result) {
$this->logWarnings();
} else {
error_log("SQL Error: " . $this->mysqli->error);
}
return $result;
}
protected function logWarnings() {
$warning = $this->mysqli->get_warnings();
while ($warning) {
error_log("[DBအသိပေး] {$warning->errno} - {$warning->message}");
$warning = $warning->next();
}
}
}
$db = new DB();
$db->query("UPDATE posts SET title='标题过长会触发အသိပေး,အရှည်ထိန်းချုပ်မှုမှအာရုံစိုက်ပါ' WHERE id=42");
MySQLI ::) query () သည် MySQLI :: get_warennings () သည် အချက်အလက်သမာဓိရှိစေရန်အတွက်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည့်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ဤသတိပေးစာများကိုလျစ်လျူမရှုပါနှင့်, သူတို့သည်သင်၏အနာဂတ် bug များကိုမကြာခဏဖုံးကွယ်လေ့ရှိသည်။ ဖွံ့ဖြိုးတိုးတက်မှုသို့မဟုတ်စမ်းသပ်ခြင်းပတ် 0 န်းကျင်တွင်သတိပေးချက်များကိုဖမ်းယူခြင်းနှင့်ကိုင်တွယ်ခြင်းအလေ့အထကိုတီထွင်ခြင်းသင်၏စီမံကိန်း၏ကြံ့ခိုင်မှုနှင့်ထိန်းသိမ်းခြင်းကိုသိသိသာသာတိုးတက်စေလိမ့်မည်။
သတိရပါ - အကယ်. အမှားကပရိုဂရမ်ကိုချော်စေလျှင်သတိပေးချက်ကသင့်အားထောင်ချောက်ကိုဆုံးရှုံးစေလိမ့်မည်။