လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDostatement :: Rowcount function ကိုအသုံးပြုနည်း။ Data Lossback ကိုထိရောက်စွာကာကွယ်ရန်ငွေပေးချေမှု Regrolback နှင့်ပူးပေါင်းရန်?

PDostatement :: Rowcount function ကိုအသုံးပြုနည်း။ Data Lossback ကိုထိရောက်စွာကာကွယ်ရန်ငွေပေးချေမှု Regrolback နှင့်ပူးပေါင်းရန်?

gitbox 2025-05-19

ဒေတာဆုံးရှုံးမှုသည်ဒေတာဘေ့စ်လုပ်ငန်းများလုပ်ဆောင်သောအခါ developer များအတွက်အပြောက်ဆုံးပြ problems နာများထဲမှတစ်ခုဖြစ်သည်။ အသုံးပြုသူအချက်အလက်မွမ်းမံခြင်း, စာရင်းယူမှုဆိုင်ရာယူခြင်း, သို့မဟုတ်အမှာစာအခြေအနေပြုပြင်ခြင်းဆိုသည်မှာ Database စစ်ဆင်ရေးကိုအောင်မြင်စွာမဖော်ထုတ်နိုင်သော်လည်းရှာဖွေတွေ့ရှိခြင်းနှင့်လုပ်ငန်းများ၌မပြုလုပ်ပါက၎င်းသည်ကြီးမားသောအကျိုးဆက်များကိုဖြစ်ပေါ်စေနိုင်သည်။

ဤဆောင်းပါးသည် PDostatement :: Rowcount () နှင့်ဒေတာဘေ့စ်ငွေလွှဲလုပ်ငန်း Rollback ယန္တရားကိုမည်သို့အသုံးပြုရမည်ကိုရှင်းပြပါလိမ့်မည်။

1 ။ RORCOUTE () ?

PDostatement :: Rowcount () သည်ယခင် ဖျက်ခြင်း , ထည့်သွင်းခြင်း သို့မဟုတ် နောက်ဆုံးအခြေအနေ မှသက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်လည်ရောက်ရှိစေသည့် PDO တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည်လုပ်ငန်းများသည်ဒေတာဘေ့စ်အပေါ်အမှန်တကယ်အကျိုးသက်ရောက်ခြင်းရှိမရှိဆုံးဖြတ်ရန်ကူညီနိုင်သည်။

သတိပြုသင့်သည်မှာ Database Drivers အားလုံးသည် Calling Rowcount () ကို ရွေးချယ်ခြင်းအတွက် Selecting Orcount () ကိုရွေးချယ်ခြင်းအတွက်အသုံးချခြင်းကိုရွေးချယ်ခြင်းသို့မဟုတ်အချက်အလက်များကိုအောင်မြင်စွာအဆင့်မြှင့်တင်ခြင်းရှိမရှိရှာဖွေရန်အသုံးပြုသည်။

2 ။ အရောင်းအ 0 ယ်များနှင့် တွဲဖက်. ၎င်းကိုအဘယ်ကြောင့်အသုံးပြုသနည်း။

ဆက်စပ်သောဒေတာဘေ့စ်စစ်ဆင်ရေးမျိုးစုံလုပ်ဆောင်သောအခါအဆင့်တစ်ခုသည်မအောင်မြင်ပါကအချက်အလက်ရှေ့နောက်မညီမှုများမှရှောင်ရှားရန်ယခင်အပြောင်းအလဲများကိုနောက်ပြန်လှိမ့်ချထားသင့်သည်။ ဥပမာအားဖြင့်, သင်သည်အသုံးပြုသူ၏အီးမေးလ်လိပ်စာကို update လုပ်လိုလျှင်, မှတ်တမ်းကိုအမှန်တကယ်ပြုပြင်မွမ်းမံခြင်းမရှိသေးပါ။ ထိုအစီအစဉ်သည်နောက်ဆက်တွဲစစ်ဆင်ရေးများဆက်လက်လုပ်ဆောင်နေသည်။

ယခုအချိန်တွင်၎င်းသည်အရောင်းအ 0 ယ်များနှင့် RORCOUT () ကို ပေါင်းစပ်ရန်အထူးအရေးကြီးသည်။

3 ။ ဥပမာ - သုံးစွဲသူသတင်းအချက်အလက်အသစ်ပြောင်းခြင်းတွင်ငွေပေးချေမှုကိုထိန်းချုပ်ခြင်း

ဒေတာလုံခြုံရေးကိုသေချာစေရန် rowcount () နှင့်အရောင်းအ 0 ယ်များကိုမည်သို့အသုံးပြုရမည်ကိုပြသသည့်လက်တွေ့ကျသောဥပမာတစ်ခုမှာ -

 <?php
$dsn = 'mysql:host=localhost;dbname=test_db;charset=utf8mb4';
$user = 'db_user';
$password = 'db_pass';

try {
    $pdo = new PDO($dsn, $user, $password, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ]);

    // အသုံးပြုသူစာတိုက်ပုံးကိုကျွန်ုပ်တို့ update လုပ်လိုကြောင်းဆိုပါစို့
    $userId = 123;
    $newEmail = '[email protected]';

    $pdo->beginTransaction();

    $stmt = $pdo->prepare("UPDATE users SET email = :email WHERE id = :id");
    $stmt->execute([
        ':email' => $newEmail,
        ':id' => $userId
    ]);

    // အသုံးပြု rowCount ဒေတာကို updated ရှိမရှိဆုံးဖြတ်ရန်
    if ($stmt->rowCount() === 0) {
        // အဘယ်သူမျှမမှတ်တမ်းများကိုမွမ်းမံပါပြီ,ပြန်အရောင်းအလှိမ့်
        $pdo->rollBack();
        echo "အသစ်ပြောင်းခြင်းမအောင်မြင်ပါ,ကိုက်ညီသောအသုံးပြုသူမရှိပါ,ငွေပေးငွေယူကိုပြန်လှိမ့်ခဲ့သည်。";
    } else {
        // အောင်မြင်စွာအသစ်ပြောင်းခြင်း,တင်သွင်းမှုတင်သွင်း
        $pdo->commit();
        echo "邮箱အောင်မြင်စွာအသစ်ပြောင်းခြင်း,ငွေပေးငွေယူတင်သွင်းခဲ့တာဖြစ်ပါတယ်。";
    }

} catch (PDOException $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    echo "ဒေတာဘေ့စ်စစ်ဆင်ရေးမအောင်မြင်ပါ:" . $e->getMessage();
}
?>

ဥပမာ -

  • ငွေပေးငွေယူတစ်ခုစတင်ရန် BeginTransactionAssaction ကို သုံးပါ။

  • Execute () update ကို execute;

  • မည်သည့်မှတ်တမ်းကိုမဆိုအမှန်တကယ်မွမ်းမံခြင်းရှိမရှိဆုံးဖြတ်ရန် Rowcount () ကို သုံးပါ။

  • မှတ်တမ်းများမအသစ်မရှိပါကငွေပေးငွေယူကိုချက်ချင်းပြန်လှိမ့်လိမ့်မည်။

  • မဟုတ်ရင်လုံခြုံစိတ်ချစွာတင်ပြပါ။

4 ။ လျှောက်လွှာဇာတ်လမ်းတစ်ပုဒ်တိုးချဲ့ခြင်း

ဤနည်းလမ်းသည်အသစ်ပြောင်းခြင်းလုပ်ငန်းများအတွက်သင့်တော်ရုံသာမကစာရင်းစနစ်များတွင်အလွန်လက်တွေ့ကျသည်။ ဖြတ်တောက်ခြင်း, ဥပမာအားဖြင့်:

  • နှုတ်ယူခြင်းမအောင်မြင်သည့်အခါအမိန့်အခြေအနေကိုပြန်လှိမ့်ပါ,

  • Useral Balance မအောင်မြင်ပါကငွေပေးချေမှုမှတ်တမ်းသွင်းခြင်းကိုပြန်လှိမ့်ပါ။

  • အသုံးပြုသူတစ် ဦး ပျက်ကွက်ခြင်းကိုဖျက်ချိန်တွင် Rollback Log ရေးသားခြင်းလုပ်ငန်းများ။

5 ။ သိကောင်းစရာများ

  • အသစ်ပြောင်းခြင်း သို့မဟုတ် ဖျက်ခြင်း စစ်ဆင်ရေးအောင်မြင်လိမ့်မည်ဟုဘယ်တော့မှမယူဆဘယ်တော့မှ;

  • RollBack သေချာစေရန်အရောင်းအ 0 ယ်များကိုအသုံးပြုသည့်အခါခြွင်းချက်များကိုကိုင်တွယ်ရန်သေချာပါစေ။

  • အမြတ်အစွန်းမြင့်မားသောမှီခိုစစ်ဆင်ရေးများအတွက်ငွေပေးငွေယူတစ်ခုတွင်ခြုံဖို့သေချာပါစေ,

  • RORCOUT () ပြန်လာ 0 သည် 0 င်မှုသည်ပျက်ကွက်ခြင်းဟုမဆိုလိုပါ။ တစ်ခါတစ်ရံတွင်တန်ဖိုးသည်မပြောင်းလဲသေးပါ။ ဒါပေမယ့်တိကျခိုင်မာတဲ့ဒေတာဇာတ်လမ်းတစ်ပုဒ်မှာတော့အဲဒါကိုငါတို့တားဆီးချင်တဲ့ "မမှန်ကန်သောရေး" အတိအကျပဲ။

ကောက်ချက်

PDostatement :: Rowcount () နှင့်အရောင်းအ 0 ယ်ထိန်းချုပ်မှုယန္တရားကိုပေါင်းစပ်ခြင်းအားဖြင့် developer များသည်ဒေတာဘေ့စ်စစ်ဆင်ရေးသည်အမှန်တကယ်အကျိုးသက်ရောက်ခြင်းရှိမရှိကိုပိုမိုတိကျစွာဆုံးဖြတ်နိုင်သည်။ ၎င်းသည်မြင့်မားသောယုံကြည်စိတ်ချရမှုစနစ်များဖွံ့ဖြိုးတိုးတက်ရေးအတွက်မရှိမဖြစ်လိုအပ်သောကျွမ်းကျင်မှုတစ်ခုဖြစ်သည်။

သင်၏စီမံကိန်းတွင်အလားတူပြ problems နာများနှင့်သင်ကြုံတွေ့ဖူးပါသလား။ သင်၏အတွေ့အကြုံကိုမျှဝေရန်မက်ဆေ့ခ်ျတစ်ခုမှထွက်ခွာရန်ကြိုဆိုပါသည်။

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    PDOStatement