လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI :: errno :: အမှားအယွင်းများကို Debugging Debugging Debugging Debugging Debugging Debugging MySQLI_Autocommit () ကိုကူညီခြင်း

MySQLI :: errno :: အမှားအယွင်းများကို Debugging Debugging Debugging Debugging Debugging Debugging MySQLI_Autocommit () ကိုကူညီခြင်း

M66 2025-07-04

PHP တွင် MySQLI_AUTOCOMOMMIT () function ကို အသုံးပြု. function ကိုအလိုအလျောက်ကျူးလွန်ခြင်း၏ function ကို enable လုပ်ရန်သို့မဟုတ်ပိတ်ရန်အသုံးပြုသည်။ ပုံမှန်အားဖြင့် MySQL သည်စုံစမ်းမှုတစ်ခုစီပြီးပါကအရောင်းအ 0 ယ်များကိုအလိုအလျောက်ကျူးလွန်သည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင် developer များကအော်တိုကျူးလွန်သော function ကိုပိတ်ရန်လိုအပ်နိုင်ပြီးမေးမြန်းချက်မျိုးစုံကိုကွပ်မျက်ခံရသောအခါငွေပေးချေမှုကိုက်ညီမှုကိုထိန်းသိမ်းထားနိုင်ရန်လိုအပ်သည်။ ဤကိစ္စတွင် developer သည်ငွေပေးငွေ ယူကိုကျူးလွန်ရန် (သို့မဟုတ်) rollback () ကို ကိုယ်တိုင်ခေါ်ဆိုရန်လိုအပ်သည်။

သို့သော်တစ်ခါတစ်ရံတွင်ကျွန်ုပ်တို့သည်အဓိကကျသောပြ problems နာများရှိသည်, အထူးသဖြင့် mySqli_autocommit ကို အသုံးပြုသောအခါ။ ဤပြ problems နာများကိုရှာဖွေရန် MySQLI :: MySQLI :: MySQLI :: MySQLI နှင့် MySQLI :: $ အမှားသည် အထူးအရေးကြီးသည်။ MySQLI :: $ errno သည် MySQL စစ်ဆင်ရေးအတွက်အမှားကုဒ်ကို MySQLI :: $ အမှားသည် အမှားအချက်အလက်များကိုထောက်ပံ့ပေးသည်။ ဤ attribute နှစ်ခုကိုပေါင်းစပ်ပြီး developer များသည်ပြ problems နာများကိုအလွယ်တကူ debug လုပ်ပြီးနေရာချထားနိုင်သည်။

MySQLI_AUTOCOMMIT () MySQLI :: $ errno ကို သုံး. ပြ a နာကိုတင်ရန်

အရောင်းအ 0 ယ ထိန်းချုပ်မှုအတွက် MySQLI_AUTOCOMOMMIT ကို မည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြပါ,

နမူနာကုဒ်

 <?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "username", "password", "database");

// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}

// အလိုအလျောက်ငွေပေးငွေယူတင်သွင်းမှုကိုပိတ်ပါ
$mysqli->autocommit(false);

// ငွေပေးငွေယူတစ်ခုစတင်ပါ
$mysqli->begin_transaction();

try {
    // ပထမ ဦး ဆုံးမေးမြန်းချက်ကို execute
    $mysqli->query("INSERT INTO users (username, email) VALUES ('user1', 'user1@m66.net')");
    
    // ဒုတိယမေးခွန်းကိုလုပ်ဆောင်ပါ
    $mysqli->query("INSERT INTO orders (user_id, product) VALUES (1, 'product1')");

    // မည်သည့်အမှားရှိ, မရှိစစ်ဆေးပါ
    if ($mysqli->errno) {
        // အမှားတစ်ခုရှိလျှင်,ပြန်အရောင်းအလှိမ့်
        throw new Exception("အမှား:".$mysqli->error);
    }

    // တင်သွင်းမှုတင်သွင်း
    $mysqli->commit();

    echo "ငွေပေးငွေယူအောင်မြင်စွာတင်သွင်းခဲ့သည်!";
} catch (Exception $e) {
    // ခြွင်းချက်ဖမ်းမိလျှင်,ပြန်အရောင်းအလှိမ့်
    $mysqli->rollback();
    echo "ငွေပေးငွေယူ Loverback,အမှား信息:" . $e->getMessage();
}

// ဒေတာဘေ့စ် connection ကိုပိတ်ပါ
$mysqli->close();
?>

ကုဒ်ခွဲခြမ်းစိတ်ဖြာခြင်း

  1. ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ပါ - MySQL server သို့ချိတ်ဆက်ရန် MySQLI () မှ MySQLI () မှတဆင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပထမဆုံးဖန်တီးခဲ့သည်။ ဆက်သွယ်မှုပျက်ကွက်ပါကအမှားအယွင်းကို $ MySQLI-Getect_Error မှတဆင့်ရ။ ပရိုဂရမ်ကိုအဆုံးသတ်ပါ။

  2. Automatic Commit ကိုပိတ်ပါ။ MySQLI-> AutoCommit (fallocommit (fallocommit (fallocommit (fallocommit) ကိုအသုံးပြုပါ။ ဆိုလိုသည်မှာငွေသွင်းငွေသည်စုံစမ်းမှုတစ်ခုစီပြီးနောက်ချက်ချင်းတင်သွင်းလိမ့်မည်မဟုတ်ပါ, သို့သော်အစား ကျူးလွန်ရန် () ကျူးလွန်ရန် manual ခေါ်ဆိုမှုတစ်ခုလိုအပ်သည်။

  3. ငွေပေးချေမှုကို Execute: ကျွန်ုပ်တို့သည်ငွေပေးငွေယူကို ဒေါ်လာ MySQLI-> START_TRANSARESATE () မှ စတင်. Insert စစ်ဆင်ရေးကို $ MySQLI-> စုံစမ်းမှု () မှတဆင့်လုပ်ဆောင်သည်။ မည်သည့်စုံစမ်းမှုအမှားပေါ်ပေါက်လာပါက $ MySQLI-> ERRNO သည် အမှား ကုဒ် နံပါတ်ကိုပြန်ပေးလိမ့်မည်။

  4. အမှားကိုင်တွယ်ခြင်း - အမှားတစ်ခုပြုလုပ်ရာတွင်အမှားတစ်ခုဖြစ်သည့်အမှားတစ်ခုဖြစ်ပါကကျွန်ုပ်တို့သည်အမှားကို မှားယွင်းစွာဖမ်းမိလျှင် ($ mySqli-> errno) ဖြင့်တရားစီရင်သည်။ အကယ်. အမှားပေါ်ပေါက်လာပါက ချွင်းချက်အသစ် () ပစ်ချွင်းချက်အသစ် () ကိုအသုံးပြုပြီးချွင်းချက်ချပြီးငွေပေးငွေယူကိုပြန်လှိမ့်ပါ ( ဒေါ်လာ MySQLI-> Rollback () ) ။

  5. ငွေပေးချေမှုကျူးလွန်ခြင်း - အကယ်. မေးမြန်းချက်အားလုံးသည်အမှားများမရှိပါကငွေသွင်းငွေလွှဲရန်အတွက် MySQLI-> STOR (STOR) ကိုကျွန်ုပ်တို့ခေါ်ဆိုပါ။

  6. ဆက်သွယ်မှုကိုပိတ်ပါ။ နောက်ဆုံးတွင် MySQLI-> အနီးကပ် () ကို အသုံးပြု. ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပိတ်ပါ။

အမှား၏အကြောင်းရင်းကိုရှာဖွေရန် MySQLI :: $ errno ကို အသုံးပြုနည်း

အထက်ပါကုဒ်တွင် $ MySQLI-> ERRNO သည် စုံစမ်းမှုအောင်မြင်စွာကွပ်မျက်ခံရခြင်းရှိမရှိဆုံးဖြတ်ရန်အဓိကအားဖြင့်အသုံးပြုသည်။ အကယ်. မေးမြန်းမှုမအောင်မြင်ပါက $ MySQLI- > ERRNO သည် သုည error error code ကိုပြန်ပို့လိမ့်မည်။ ဤအချက်အလက်မှတစ်ဆင့်ကျွန်ုပ်တို့သည်ပြ the နာကိုလျင်မြန်စွာရှာဖွေနိုင်သည်။

  • အကယ်. $ MySQLI-> ERRNO 0 င်လျှင်အမှားအယွင်းမရှိပါ။

  • အကယ်. $ MySQLI-> ERRNO သည်သုညမဟုတ်သောတန်ဖိုးတစ်ခုဖြစ်ပါကအမှားတစ်ခုဖြစ်ပွားခဲ့သည်ဟုဆိုလိုသည်။ ကျနော်တို့ကတိကျသောအမှားသတင်းအချက်အလက်ကိုကြည့်ရှုရန် $ MySQLI-> အမှားကို သုံးနိုင်သည်။

ဥပမာအားဖြင့်, စားပွဲ၌အချက်အလက်များထည့်သွင်းထားပြီးပါက Insert Query ကိုကွပ်မျက်ခံရသည့်အခါ MySQL သည်အမှားကုဒ် 1062 (ထပ်သော့ချက်အမှားကိုညွှန်ပြသည်) သည်အမှားကုဒ်နံပါတ် 1062 ကိုပြန်ပို့လိမ့်မည်။ ဤအချိန်တွင် ဒေါ်လာ MySQLI-> ERRNO သည် 1062 သို့ ပြန်သွားလိမ့်မည်။ MySQLI-> ERRESS သည် "မူလတန်း 'အတွက်" Duplicate Entry' user1 'ကဲ့သို့သောအမှားအယွင်းတစ်ခုသို့ပြန်သွားလိမ့်မည်။

သာမန် MySQL အမှားကုဒ်များ

  • 1062 - Reply Ember (E.G. မူလတန်းသော့မိတ္တူပွား)

  • 1046 - ဒေတာဘေ့စ်ကိုမရွေးပါ

  • 1146 - စားပွဲပေါ်မှာမတည်ရှိပါဘူး

  • 2002 - MySQL server သို့ဆက်သွယ်ခြင်းမအောင်မြင်ပါ

$ MySQLI-> ERRNO-> ERRNO နှင့် $ MySQLI-> အမှားများ မှတစ်ဆင့်ကျွန်ုပ်တို့သည်အမှား၏အကြောင်းရင်းကိုထိထိရောက်ရောက်ရှာဖွေတွေ့ရှိနိုင်ပြီးသက်ဆိုင်ရာအစီအမံများကိုအချိန်မီပြုလုပ်နိုင်သည်။

အကျဉ်းချုပ်

MySQLI_AUTOCOMOMMIT () ငွေသွင်းခြင်းထိန်းချုပ်မှုအတွက် MySQLI :: MySQLI :: MySQLI :: MySQLI :: $ အမှားသည် 0 ယ်ယူမှုဆိုင်ရာကိစ္စရပ်များနှင့်ကြုံတွေ့ရသောအခါအလွန်အသုံးဝင်သော debugging tools များဖြစ်သည်။ ၎င်းတို့သည် developer များကအမှားအယွင်းများ၏အကြောင်းရင်းကိုလျင်မြန်စွာရှာဖွေရန်လျင်မြန်စွာရှာဖွေရန်ကူညီနိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုဖြစ်စဉ်တွင်ဒေတာဘေ့စ်လုပ်ငန်းလည်ပတ်မှု၏တည်ငြိမ်မှုနှင့်တည်ငြိမ်မှုကိုသေချာစေရန်အတွက်ငွေပေးငွေယူနှင့်အမှားကိုင်တွယ်သည့်ယန္တရားများကိုအသုံးပြုရန်သတိရပါ။