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

MySQLI :: Instrad_Transaction တွင်ငွေပေးငွေယူမှု၏အထီးကျန်မှုအဆင့်ကိုမည်သို့ဖြေရှင်းရမည်နည်း။

gitbox 2025-06-17

PHP တွင် MySQLI extension သည် MySQL ဒေတာဘေ့စ်ကိုအသုံးပြုသောအခါဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်မည့်အသုံးအများဆုံးကိရိယာတစ်ခုဖြစ်သည်။ ဒေတာဘေ့စ်လုပ်ငန်းများလိုအပ်သည့်အရောင်းအ 0 ယ်များလိုအပ်သည့်အခါ MySQLI :: STORT_TRANSAGE Method သည်ငွေပေးငွေယူ၏အစကိုထိန်းချုပ်ရန်ယန္တရားတစ်ခုဖြစ်သည်။ သို့သော်အရောင်းအ 0 ယ်များဖွင့်လှစ်ခြင်းအပြင်ငွေပေးချေမှုတစ်ခု၏အထီးကျန်မှုသည်အလွန်အရေးကြီးသောထည့်သွင်းစဉ်းစားခြင်းဖြစ်သည်။

ဤဆောင်းပါးသည် MySQLI :: Instrowringaction တွင်အထီးကျန်ခြင်း၏အထီးကျန်မှုအဆင့်ကိုမည်သို့ညှိနှိုင်းရမည်ကိုစူးစမ်းလေ့လာနိုင်သည်။

ငွေပေးငွေယူ၏အထီးကျန်အဆင့်ကဘာလဲ?

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

  1. အငြင်းအခုံ ဖတ်ရန်အဆင်သင့် - အနိမ့်ဆုံးအထီးကျန်မှုအဆင့်သည်အရောင်းအ 0 ယ်များကိုအခြားသတ်မှတ်ထားသည့်အရောင်းအ 0 ယ်များမှအချက်အလက်များကိုဖတ်ရန်ခွင့်ပြုသည်။ ၎င်းသည်ညစ်ပတ်စာဖတ်ခြင်း, ထပ်ခါတလဲလဲဖတ်ရှုခြင်းများကိုဖြစ်ပေါ်စေနိုင်သည်။

  2. ကျူးလွန်သောဖတ်ပါ (ကျူးလွန်သည်) : အရောင်းအ 0 ယ်များသည်ကျူးလွန်သောအချက်အလက်များကိုသာဖတ်နိုင်သည်။ ညစ်ပတ်စာဖတ်ခြင်းကိုရှောင်ရှားသော်လည်းသင်ထပ်ခါတလဲလဲစာမဖတ်နိုင်သောစာဖတ်ခြင်းနှင့် Phantom စာဖတ်ခြင်းကိုသင်ကြုံတွေ့ရဆဲဖြစ်နိုင်သည်။

  3. ထပ်ခါတလဲလဲဖတ်ရှုခြင်း - ငွေပေးငွေယူကွပ်မျက်စဉ်အတွင်းအတန်းဒေတာများကိုဖတ်ရှုနိုင်ပြီးအခြားအရောင်းအ 0 ယ်များသည်ဤအတန်းများကိုမပြုပြင်နိုင်ပါ။ ညစ်ပတ်စာဖတ်ခြင်းနှင့်ထပ်ခါတလဲလဲမဟုတ်သောစာဖတ်ခြင်းကိုရှောင်ရှားနိုင်သော်လည်း Phantom စာဖတ်ခြင်းကိုဆက်လက်ဖြစ်ပေါ်နိုင်သည်။

  4. serializable (serializable) - အမြင့်ဆုံးအထီးကျန်အဆင့်, အရောင်းအ 0 ယ်အားလုံးလုံးဝအထီးကျန်ဖြစ်လိမ့်မည်။ စွမ်းဆောင်ရည်နိမ့်ပေမယ့်ဒေတာများ၏ရှေ့နောက်ညီညွတ်မှုနှင့်သမာဓိစောင့်သိ။

MySQLI :: Instrad_Transaction တွင်ငွေပေးငွေယူမှု၏အထီးကျန်အဆင့်ကိုမည်သို့သတ်မှတ်ရမည်နည်း။

MySQLI တွင် MySQLI :: set_charset နည်းလမ်းမှတဆင့်ငွေပေးငွေယူ၏အထီးကျန်အဆင့်ကိုသတ်မှတ်နိုင်သည်။ များသောအားဖြင့်၎င်းကို မစတင်မှီ ခေါ်ဆိုခြင်းမပြုမီ Set Resistance Isolation Level State State ကို အသုံးပြု. သတ်မှတ်ရန်လိုအပ်သည်။

ငွေပေးငွေယူအထီးကျန်မှုအဆင့်ကိုသတ်မှတ်ပြီးညှိရန်အဆင့်များမှာဤတွင်ဖြစ်သည်။

1 ။ ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ

ပထမ ဦး စွာ MySQL ဒေတာဘေ့စ်နှင့်ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ။

 <span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}
</span></span>

2 ။ ငွေပေးငွေယူ၏အထီးကျန်အဆင့်ကိုသတ်မှတ်ပါ

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

 <span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SET TRANSACTION ISOLATION LEVEL REPEATABLE READ"</span></span><span>);
</span></span>

လိုအပ်သည့်အတိုင်းသင့်လျော်သောအထီးကျန်အဆင့်ကိုရွေးချယ်နိုင်သည်။

3 ။ ငွေပေးငွေယူကိုစတင်ပါ

အဆိုပါငွေပေးငွေယူ၏အထီးကျန်အဆင့်ကိုသတ်မှတ်ပြီးနောက် START_TRANSATESATE ကို အသုံးပြု. ငွေပေးငွေယူကိုစတင်ပါ။

 <span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">begin_transaction</span></span><span>();
</span></span>

4 ။ ငွေပေးချေမှုစစ်ဆင်ရေးလုပ်ဆောင်ပါ

ငွေပေးငွေယူတွင်ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်ပါ။

 <span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-comment">// ဒေတာဘေ့စစစ်ဆင်ရေးလုပ်ဆောင်ပါ</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')"</span></span><span>);

    </span><span><span class="hljs-comment">// တင်သွင်းမှုတင်သွင်း</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">commit</span></span><span>();
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-comment">// တစ်ခုခုမှားသွားလျှင်,ပြန်အရောင်းအလှိမ့်</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">rollback</span></span><span>();
}
</span></span>

5 ။ ငွေပေးငွေယူအဆုံးသတ်

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

  • ငွေပေးငွေယူကိုကျူးလွန်ရန် $ MySQLI-> ကျူးလွန် () ကို သုံးပါ။

  • ငွေပေးငွေယူကိုပြန်လှိမ့်ရန် $ MySQLI-> Rollback () ကို သုံးပါ။

ဥပမာ: ဖြည့်စွက်ကုဒ်

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"user"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// ငွေပေးငွေယူအထီးကျန်အဆင့်ကိုသတ်မှတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SET TRANSACTION ISOLATION LEVEL SERIALIZABLE"</span></span><span>);

</span><span><span class="hljs-comment">// ငွေပေးငွေယူတစ်ခုစတင်ပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">begin_transaction</span></span><span>();

</span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-comment">// အချို့သောဒေတာဘေ့စ်စစ်ဆင်ရေးလုပ်ဆောင်ပါ</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO products (name, price) VALUES ('product1', 100)"</span></span><span>);
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"UPDATE products SET price = 150 WHERE name = 'product2'"</span></span><span>);

    </span><span><span class="hljs-comment">// တင်သွင်းမှုတင်သွင်း</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">commit</span></span><span>();
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ငွေပေးငွေယူတင်သွင်းမှုအောင်မြင်သော!"</span></span><span>;
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-comment">// ပြန်အရောင်းအလှိမ့်</span></span><span>
    </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">rollback</span></span><span>();
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ငွေပေးငွေယူ Loverback: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}

</span><span><span class="hljs-comment">// ဒေတာဘေ့စ် connection ကိုပိတ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

အထီးကျန်အဆင့်ကိုရွေးချယ်ခြင်း

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

  • 0 ထု ကိုတစ်ပြိုင်နက်တည်းစုံစမ်းမှုခွဲစိတ်ခြင်း

  • ဒေတာရှေ့နောက်ညီညွတ်မှုကိုသေချာစွာအာမခံထားရန်လိုအပ်သည် ။ အရောင်းအ 0 ယ်များလုံးဝအထီးကျန်နေစေရန်သေချာစေမည့် serializable ကို ရွေးချယ်ပါ, သို့သော်စွမ်းဆောင်ရည်သည်အလွန်ထိခိုက်လိမ့်မည်။

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

အကျဉ်းချုပ်

PHP တွင် MySQLI extension ကိုအသုံးပြုသောအခါငွေပေးချေမှု၏အထီးကျန်မှုအဆင့်ကိုသတ်မှတ်ခြင်းသည်အလွန်အရေးကြီးသောစစ်ဆင်ရေးတစ်ခုဖြစ်သည်။ Set Defingsolation အထီးကျန်မှုအဆင့် ကြေငြာချက်ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည် mySqli :: အရောင်းအဝယ်ပြုခြင်း၏ယုံကြည်စိတ်ချရမှုနှင့်ကိုက်ညီမှုရှိစေရန်သီးခြားခွဲစိတ်မှုအဆင့်ကိုချိန်ညှိနိုင်သည်။ သင့်လျော်သောအထီးကျန်ခြင်းအဆင့်ကိုရွေးချယ်ခြင်းသည်ဒေတာဘေ့စ်၏စွမ်းဆောင်ရည်နှင့်ဒေတာရှေ့နောက်ညီညွတ်မှုအပေါ်အရေးကြီးသောသက်ရောက်မှုရှိသည်။

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

    mysqli