PHP ဖွံ့ဖြိုးတိုးတက်ရေးကာလအတွင်းဒေတာဘေ့စ်လုပ်ငန်းများသည်များသောအားဖြင့်အမှားအယွင်းများဆုံးသောအပိုင်းဖြစ်သည်။ မလျော်ကန်သောအမှားကိုင်တွယ်သည့်ယန္တရားသို့မဟုတ်ခြွင်းချက်များစနစ်တကျဖမ်းရန်ပျက်ကွက်ခြင်းကပရိုဂရမ်ပျက်ခြင်းသို့မဟုတ်အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုပျက်စီးစေနိုင်သည်။ ထို့ကြောင့်ကျိုးကြောင်းဆီလျော်သောအမှားကိုင်တွယ်သည်ဒေတာဘေ့စ်လုပ်ငန်းများတွင်အထူးအရေးကြီးသည်။ ဤဆောင်းပါးသည် MySQLI_STMT ကိုမည်သို့ပေါင်းစပ်ရမည် :: $ အမှား နှင့် PHP မှချွင်းချက်ဆိုင်ရာယန္တရားသည်ဒေတာဘေ့စ်အမှားများကိုကိုင်တွယ်သောအခါ PHP ပရိုဂရမ်များသည်ဒေတာဘေ့စ်အမှားများကိုရင်ဆိုင်ရသောအခါ PHP အစီအစဉ်များကိုပိုမိုကောင်းမွန်စွာတုံ့ပြန်နိုင်မည်ဟုသေချာစေသည်။
MySQLI_STMM :: $ အမှား သည် MySQLI_STMT Office ၏ပိုင်ဆိုင်မှုမှာ MySQLI_STMT Extraction ၏ ပိုင်ဆိုင်မှုဖြစ်သည် ။ အကယ်. SQL query တစ်ခုကိုကွပ်မျက်ခံရစဉ်အမှားအယွင်းတစ်ခုဖြစ်ပါကဤပိုင်ဆိုင်မှုမှတစ်ဆင့်အသေးစိတ်အချက်အလက်များကိုသင်ရရှိနိုင်သည်။
ဥပမာအားဖြင့်, မအောင်မြင်သောပြင်ဆင်မှုများ ကိုပြင်ဆင်ခြင်း သို့မဟုတ် လုပ်ဆောင်ခြင်းကို MySQLI_STMMT :: အမှားကိုင်တွယ်ရန်အတွက်အမှားအယွင်း တစ်ခုရရှိနိုင်ပါသည်။
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
if ($stmt->error) {
// output error message
echo "SQL အမှား: " . $stmt->error;
}
PHP ၏ချွင်းချက်ယန္တရားသည် ကြိုးစားမှု ထုတ်ပြန်ချက်များမှတစ်ဆင့်အမှားများကိုဖမ်းရန်နှင့်ကိုင်တွယ်ရန်ခွင့်ပြုသည်။ ပရိုဂရမ်၏ကွပ်မျက်စဉ်အတွင်းခြွင်းချက်တစ်ခုကြုံတွေ့ရသောအခါ, သင်သည် ပစ်ချခြင်း နှင့် ဖမ်းမိသည့် ကြေညာချက်တွင်၎င်းကိုထုတ်ယူခြင်းဖြင့်ခြွင်းချက်အရာဝတ်ထုကိုပစ်ချနိုင်သည်။ PHP သည်အမှားအယွင်းများကိုဖမ်းယူရန်နှင့်သင့်လျော်သောဆောင်ရွက်မှုများကိုရယူနိုင်သည့်ချွင်းချက်အတန်းများနှင့်နည်းလမ်းများ၏ကြွယ်ဝမှုကိုထောက်ပံ့ပေးသည်။
MySQLI စစ်ဆင်ရေးအတွက်, ချွင်းချက် mode ကိုဖွင့်ထားလျှင်, MySQLI :: set_charets () set_charets () set_charet_mode မှတဆင့် dat_charet () မှတဆင့်ဒေတာဘေ့စ် connection set ကိုသတ်မှတ်နိုင်သည်သို့မဟုတ် MySQLI :: SET_REPORD_MODE မှတဆင့်အမှားအယွင်းများကို configure လုပ်နိုင်သည်။ ဤနည်းလမ်းများသည် SQL အမှားများကိုဖမ်းရန်နှင့်၎င်းတို့ကိုလုပ်ဆောင်ရန်ပိုမိုလွယ်ကူစေသည်။
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
// တည်ဆောက်သည် MySQLi ခြွင်းချက် mode ကို
$mysqli->report_mode = MYSQLI_REPORT_STRICT;
try {
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $user_id);
$stmt->execute();
} catch (mysqli_sql_exception $e) {
echo "数据库အမှား: " . $e->getMessage();
}
MySQLI သည် MySQLI_STMT :: SQL အမှားများကိုဖမ်းရန် $ အမှားများကို $ sql အမှားများကိုဖမ်းရန်အမှားအယွင်းများကသာလျှင် ကွပ်မျက်ခြင်း သို့မဟုတ် ပြင်ဆင်ခြင်း မအောင်မြင်သည့်အခါအမှားအချက်အလက်များကိုသာပေးသည်။ ချွင်းချက်ယန္တရားကိုပိုမိုကောင်းမွန်စွာအသုံးချနိုင်ရန်အတွက်ကျွန်ုပ်တို့သည်အမှားကိုဖမ်းယူပြီးနောက်ချွင်းချက်တစ်ခုချနိုင်ပြီးဒေတာဘေ့စ်အမှားကိုပိုမိုပြောင်းလွယ်ပြင်လွယ်နှင့်ထိန်းချုပ်ရန်ချွင်းချက်ကိုင်တွယ်ယန္တရားကိုပေါင်းစပ်နိုင်သည်။
$mysqli = new mysqli('localhost', 'user', 'password', 'database');
// တည်ဆောက်သည် MySQLi ခြွင်းချက် mode ကို
$mysqli->report_mode = MYSQLI_REPORT_STRICT;
try {
// ဒီမှာလွန် prepare ထုတ်ပြန်ချက် Execution Qualiey
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $user_id);
if (!$stmt->execute()) {
throw new Exception("数据库执行အမှား: " . $stmt->error);
}
} catch (Exception $e) {
// ခြွင်းချက်နှင့် output ကိုဖမ်းယူဖမ်းယူ
echo "ခြွင်းချက်တစ်ခုဖြစ်ပွားခဲ့သည်: " . $e->getMessage();
// သစ်ထုတ်လုပ်ခြင်းစသည်
}
အထက်ဖော်ပြပါကုဒ်များတွင် MySQLI_STMT :: အမှားအယွင်းများဖြင့် SQL Error Message ကို ဦး စွာရယူပြီးဒေါ်လာအမှား မှတစ်ဆင့်ခြွင်းချက်အရာများကို ပစ်ချ ပါ။ ထို့နောက်ချွင်းချက်သည် ဖမ်းမိသော ကြေညာချက်မှတစ်ဆင့်ဖမ်းမိပြီးအမှားအယွင်းများသည် output ကိုဖြစ်သည်။
MySQLI_STMMT :: $ အမှားအယွင်းများကို အတိအလင်းစစ်ဆေးခြင်းမရှိဘဲခြွင်းချက်ကိုင်တွယ်ခြင်းဖြင့်အဆင် သင့်ကိုင်တွယ်ခြင်းအားဖြင့်အမှားကိုင်တွယ်ခြင်း အားဖြင့်အမှားအယွင်းကိုင်တွယ်မှုကိုကိုင်တွယ်ခြင်း။ ဤသည် code ကိုပိုမိုတိကျစွာစေသည်။
ပြောင်းလွယ်ပြင်လွယ်အမှားကိုင်တွယ်သူယန္တရား - အငြင်းပွားဖွယ်ယန္တရားမှတဆင့်ကွဲပြားခြားနားသောအဆင့်ဆင့်နှင့်အမျိုးအစားများကိုကိုင်တွယ်ဖြေရှင်းနိုင်သည်။ ဥပမာအားဖြင့်, အမှားအယွင်းများကိုထုတ်ယူခြင်းထက်ကွဲပြားသောအမှားအယွင်းများ (ထိုကဲ့သို့သောဆက်သွယ်မှုပျက်ကွက်ခြင်း,
သစ်ခုတ်ခြင်းနှင့် debugging - ချွင်းချက်ယန္တရားသည်ကျွန်ုပ်တို့အားအသေးစိတ်အမှားမှတ်တမ်းများကိုအလွယ်တကူဖမ်းရန်ခွင့်ပြုသည်။ developer များသည်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်ကူညီသည်။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်ဤဒေတာဘေ့စ်စစ်ဆင်ရေးများကိုစာသင်ခန်းတစ်ခုထဲသို့ချထားနိုင်သည်, ၎င်းသည်ကုဒ်၏ပြန်လည်သုံးသပ်ခြင်းနှင့်ပြုပြင်ခြင်းကိုတိုးတက်စေနိုင်သည်။ ဒေတာဘေ့စ်စစ်ဆင်ရေးပျက်ကွက်သောအခါ, သစ်ခုတ်ခြင်း, အကြောင်းကြားစာနှင့်အခြားစစ်ဆင်ရေးများကိုခြွင်းချက်တစ်ခုချခြင်းနှင့်စည်းလုံးသောခြွင်းချက်ပရိုဆက်ဆာကိုအသုံးပြုခြင်းအားဖြင့်ဖျော်ဖြေတင်ဆက်သည်။
class Database {
private $mysqli;
public function __construct($host, $username, $password, $dbname) {
$this->mysqli = new mysqli($host, $username, $password, $dbname);
$this->mysqli->report_mode = MYSQLI_REPORT_STRICT;
}
public function fetchUserById($user_id) {
try {
$stmt = $this->mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $user_id);
if (!$stmt->execute()) {
throw new Exception("စုံစမ်းမှုမအောင်မြင်ပါ: " . $stmt->error);
}
return $stmt->get_result()->fetch_assoc();
} catch (Exception $e) {
// ချွင်းချက်များနှင့်စံချိန်ဖမ်း
error_log("数据库操作အမှား: " . $e->getMessage());
return null;
}
}
}
$db = new Database('localhost', 'user', 'password', 'database');
$user = $db->fetchUserById(1);
if ($user === null) {
echo "အသုံးပြုသူအချက်အလက်များရရှိရန်မအောင်မြင်ပါ";
}
ဤဥပမာတွင် Fetteruserbyid Method သည်ဒေတာဗေ့စ်လည်ပတ်မှုကိုလိုက်နာပြီးခြွင်းချက်များကိုဖမ်းမိသည်။ အကယ်. ဒေတာဘေ့စ ် လည်ပတ်မှုမအောင်မြင်ပါက,
MySQLI_STMT :: $ error error and php ချွင်းချက်ယန္တရားများကိုပေါင်းစပ်ခြင်းဖြင့် MySQL ဒေတာဘေ့စ်လုပ်ငန်းများ၌ချွင်းချက်များနှင့်အမှားများကိုပိုမိုကောင်းမွန်စွာကိုင်တွယ်နိုင်သည်။ ၎င်းသည်ပရိုဂရမ်၏ကြံ့ခိုင်မှုကိုပိုမိုကောင်းမွန်စေသည်သာမကရှင်းလင်းစွာကိုင်တွယ်နိုင်သည်။ ချွင်းချက်ယန္တရားများကိုအသုံးပြုခြင်းသည်အမှားအယွင်းများကိုမှတ်တမ်းတင်ခြင်း, မှတ်တမ်းများကိုမှတ်တမ်းတင်ခြင်း,