ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်သောအခါကျွန်ုပ်တို့သည်အချို့သောမေးမြန်းချက်များမှားယွင်းနေသောကြောင့်သို့မဟုတ်အချို့သောစစ်ဆင်ရေးများကြောင့်အချို့သောစစ်ဆင်ရေးများကိုအကောင်အထည်ဖော်နိုင်သည့်အတွက်ငွေပေးချေမှုမအောင်မြင်မှုများကိုမကြာခဏကြုံတွေ့ရလေ့ရှိသည်။ ဤအချိန်တွင်ပျက်ကွက်သောခြေလှမ်းများကိုခြေရာခံရန်နှင့်အသေးစိတ်အမှားအချက်အလက်များကိုအချိန်မီဖြင့်ရယူရန်အထူးအရေးကြီးသည်။ MySQLI extension သည် URRNO နှင့် $ error properties များကိုထောက်ပံ့ပေးသည်။ ငွေပေးချေမှုသစ်ထုတ်လုပ်ခြင်းနှင့်ပေါင်းစပ်ပြီးကျရှုံးမှု၏တိကျသောအဆင့်များကိုကျွန်ုပ်တို့ထပ်မံခြေရာခံနိုင်သည်။
ဤဆောင်းပါးသည် MySQLI :: $ errno နှင့်ငွေသွင်းငွေထုတ်ရေးလုပ်ငန်းများနှင့်အတူဒေတာဘေ့စ်စစ်ဆင်ရေးပျက်ကွက်မှုအဆင့်များကိုခြေရာခံရန်မည်သို့အသေးစိတ်ဖော်ပြထားသည်။
PHP တွင် MySQLI extension သည်နောက်ဆုံးဒေတာဘေ့စ်လည်ပတ်မှုတွင်ဖြစ်ပွားခဲ့သောအမှားကုဒ်ကိုကိုယ်စားပြုသော $ errno property ကိုထောက်ပံ့ပေးသည်။ ဒေတာဘေ့စ်စုံစမ်းမှုတစ်ခုသို့မဟုတ်အခြားစစ်ဆင်ရေးမအောင်မြင်သည့်အခါ $ errno ကို သက်ဆိုင်ရာအမှားကုဒ်ကိုသတ်မှတ်လိမ့်မည်။ အမှားတစ်ခုဖြစ်ပွားပြီးအသေးစိတ်အမှားအချက်အလက်များကိုထပ်မံရယူခြင်းရှိမရှိဆုံးဖြတ်ရန်ဤတန်ဖိုးကိုသင်စစ်ဆေးနိုင်သည်။
if ($mysqli->errno) {
echo "အမှားကုဒ်: " . $mysqli->errno . "<br>";
echo "အမှားသတင်းစကား: " . $mysqli->error . "<br>";
}
အထက်ပါကုဒ်မှတဆင့်အမှားတစ်ခုဖြစ်ပေါ်ပါကကျွန်ုပ်တို့သည်တိကျသောအမှားကုဒ်နှင့်အမှားအယွင်းများကိုရယူနိုင်သည်။
Multi-step database operations များကိုလုပ်ဆောင်သောအခါကျွန်ုပ်တို့သည်များသောအားဖြင့်စစ်ဆင်ရေး၏အနုမြူဗုံးကိုသေချာစေရန်အရောင်းအ 0 ယ်များကိုအသုံးပြုလေ့ရှိသည်။ ကျွန်ုပ်တို့သည်အရောင်းအ 0 ယ်များကိုလုပ်ဆောင်သောအခါအောင်မြင်မှုများအားလုံးကိုအောင်မြင်စွာကွပ်မျက်ခံရရမည်။ ငွေပေးငွေယူကိုအသုံးပြုသောအခါတစ်ဆင့်ပျက်ကွက်ပါက MySQLI :: $ errno မှတစ်ဆင့်ပျက်ကွက်ခြင်း၏အကြောင်းရင်းကိုကျွန်ုပ်တို့ဖမ်းယူနိုင်ပြီးပိုမိုလွယ်ကူသည့်နောက်ဆက်တွဲခြေရာခံခြင်းနှင့်ပြ es နာဖြေရှင်းခြင်းအတွက်မှတ်တမ်းကိုမှတ်တမ်းတင်နိုင်သည်။
$mysqli->begin_transaction();
try {
// အဆင့် 1
$mysqli->query("UPDATE users SET balance = balance - 100 WHERE user_id = 1");
if ($mysqli->errno) {
throw new Exception("လှမ်း 1 ဆုံးရှုံး,အမှားကုဒ်:" . $mysqli->errno . " အမှားသတင်းစကား:" . $mysqli->error);
}
// အဆင့် 2
$mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE account_id = 2");
if ($mysqli->errno) {
throw new Exception("လှမ်း 2 ဆုံးရှုံး,အမှားကုဒ်:" . $mysqli->errno . " အမှားသတင်းစကား:" . $mysqli->error);
}
// တင်သွင်းမှုတင်သွင်း
$mysqli->commit();
} catch (Exception $e) {
// ငွေပေးငွေယူ Loverback
$mysqli->rollback();
// မှတ်တမ်းအမှားမှတ်တမ်း
error_log("事务ဆုံးရှုံး: " . $e->getMessage());
}
အထက်ဖော်ပြပါကုဒ်များတွင်ကျွန်ုပ်တို့သည်ငွေပေး ငွေ ယူတစ်ခုစတင်ရန်နှင့်ခြေလှမ်းတစ်ခုစီပြီးနောက်အမှားတစ်ခုဖြစ်ပွားခြင်းရှိမရှိစစ်ဆေးပါ။ အဆင့်တစ်ဆင့်မအောင်မြင်ပါက Database စစ်ဆင်ရေးသည်တစ်စိတ်တစ်ပိုင်းအောင်မြင်ရန်နှင့်ရှေ့နောက်ညီညွတ်မှုကိုဆက်လက်ထိန်းသိမ်းထားနိုင်မည်မဟုတ်ကြောင်းသေချာစေရန်ချွင်းချက်ချပြီးငွေပေးချေမှုထပ်ခါတလဲလဲပြုလုပ်ပါ။ တစ်ချိန်တည်းမှာပင်အမှားအယွင်းများကိုပိုမိုလွယ်ကူသည့်နောက်ဆက်တွဲပြ troubl နာဖြေရှင်းခြင်းအတွက်မှတ်တမ်းတွင်မှတ်တမ်းတင်ထားသည်။
မအောင်မြင်သောခြေရာခံမှုကိုပိုမိုကောင်းမွန်သောခြေရာခံခြင်းနှင့်လုပ်ငန်းလည်ပတ်မှုအဆင့်တစ်ခုစီ၏ရလဒ်များကိုမှတ်တမ်းတင်ရန် logging function ကိုပေါင်းစပ်နိုင်သည်။ မှတ်တမ်းဖိုင်သည် SQL ထုတ်ပြန်ချက်များ, အမှားအယွင်းများ, အမှားအယွင်းများ, အမှားအယွင်းများ, အမှားအယွင်းများ,
function log_error($message) {
$logfile = '/path/to/your/logfile.log';
$timestamp = date('Y-m-d H:i:s');
$log_message = "$timestamp - $message\n";
file_put_contents($logfile, $log_message, FILE_APPEND);
}
$mysqli->begin_transaction();
try {
// အဆင့် 1
$mysqli->query("UPDATE users SET balance = balance - 100 WHERE user_id = 1");
if ($mysqli->errno) {
log_error("လှမ်း 1 ဆုံးရှုံး,အမှားကုဒ်:" . $mysqli->errno . " အမှားသတင်းစကား:" . $mysqli->error);
throw new Exception("လှမ်း 1 ဆုံးရှုံး");
}
// အဆင့် 2
$mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE account_id = 2");
if ($mysqli->errno) {
log_error("လှမ်း 2 ဆုံးရှုံး,အမှားကုဒ်:" . $mysqli->errno . " အမှားသတင်းစကား:" . $mysqli->error);
throw new Exception("လှမ်း 2 ဆုံးရှုံး");
}
// တင်သွင်းမှုတင်သွင်း
$mysqli->commit();
} catch (Exception $e) {
// ငွေပေးငွေယူ Loverback
$mysqli->rollback();
// မှတ်တမ်းအမှားမှတ်တမ်း
log_error("事务ဆုံးရှုံး: " . $e->getMessage());
}
ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည် console သို့အမှားအချက်အလက်များကိုထုတ်ယူနိုင်ရုံသာမကခြေလှမ်းတစ်ခုစီ၏ပျက်ကွက်မှုအရင်းနှင့်ငွေပေးငွေယူတစ်ခုလုံးကိုနောက်ပိုင်းတွင်လွှဲပြောင်းခြင်းအတွက်ပျက်ကွက်ခြင်း၏အကြောင်းရင်းများကိုလည်းမှတ်တမ်းတင်နိုင်သည်။
သင်၏ဒေတာဘေ့စ်လုပ်ငန်းများတွင်ပြင်ပအရင်းအမြစ်များမှခေါ်ဆိုမှုများပါ 0 င်သည့်အခါ apis သို့မဟုတ်အခြား 0 န်ဆောင်မှု 0 န်ဆောင်မှုများကို URL များမှတောင်းဆိုခြင်းကဲ့သို့သောပြင်ပအရင်းအမြစ်များကိုတောင်းဆိုသည့်အခါမှန်ကန်သော URL ကိုအသုံးပြုရန်အရေးကြီးသည်။ သင်၏လျှောက်လွှာတွင်သင်သတ်သတ်မှတ်မှတ်ဒိုမိန်းအမည်ကိုအစားထိုးရန်လိုအပ်ပါကရိုးရှင်းသော string ကိုအစားထိုးခြင်းမှတစ်ဆင့်ဤလိုအပ်ချက်ကိုရရှိနိုင်ပါသည်။
ဥပမာအားဖြင့်, သင်၏ကုဒ်သည်အောက်ပါ URL ရှိကြောင်းဆိုပါစို့။
$url = "https://example.com/api/getdata";
Domain Name ကို M66.net ဖြင့်အစားထိုးလိုပါက strip_replace () function ကိုသုံးနိုင်သည်။
$url = "https://example.com/api/getdata";
$url = str_replace("example.com", "m66.net", $url);
echo $url; // ထုတ်လုပ်ခြင်း: https://m66.net/api/getdata
ဤနည်းအားဖြင့် URL တွင် domain name သည်ကျန်ရှိနေသေးသောလုပ်ဆောင်မှုကိုမထိခိုက်စေဘဲလိုအပ်သည့်အခါ dynamically divamically အစားထိုးသည်။
MySQLI :: RURRNO နှင့်ငွေပေးငွေယူဝင်ရောက်ခြင်းကိုပေါင်းစပ်ခြင်း, ဒေတာဘေ့စ်စစ်ဆင်ရေး၏မအောင်မြင်သောခြေလှမ်းများကိုပိုမိုဂရုတစိုက်ခြေရာခံနိုင်သည်။ ခွဲစိတ်ကုသမှုပျက်ကွက်သောအခါအမှားအချက်အလက်များကိုလျင်မြန်စွာရယူပြီး Easy Post-debugging အတွက် log သို့ log to log ပြုလုပ်နိုင်သည်။ တစ်ချိန်တည်းမှာပင် URL domain names များကိုအစားထိုးသည့်လှည့်ကွက်ကိုအသုံးပြုခြင်းအားဖြင့်ပြင်ပအရင်းအမြစ်များကိုခေါ်သည့်အခါမှန်ကန်သောဒိုမိန်းအမည်ကိုသုံးနိုင်သည်။
ဤနည်းလမ်းများမှတစ်ဆင့်သင်၏စနစ်၏ကြံ့ခိုင်မှုကိုများစွာတိုးတက်အောင်လုပ်နိုင်သည်, ဒေတာဘေ့စ်လုပ်ငန်းများကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုလျင်မြန်စွာရှာဖွေတွေ့ရှိနိုင်သည်။