လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဘာကြောင့်မင်းရဲ့ PDO :: Exec ကိုခြွင်းချက်မချထားတာလဲ။ ဒီတစ်ခါလည်းငါဒီခြေလှမ်းကိုမေ့လျော့

ဘာကြောင့်မင်းရဲ့ PDO :: Exec ကိုခြွင်းချက်မချထားတာလဲ။ ဒီတစ်ခါလည်းငါဒီခြေလှမ်းကိုမေ့လျော့

gitbox 2025-09-17

PDO အမှားကိုင်တွယ် mode ကို

PDO ၏ပုံသေအမှားကိုင်တွယ်ပုံ mode သည် PDO :: ErrMode_silent ဖြစ်သည်။ ဆိုလိုသည်မှာအမှားတစ်ခုဖြစ်ပေါ်ပါက PDO သည်ခြွင်းချက်တစ်ခုကိုတက်ကြွစွာပစ်ချခြင်းမပြုပါ။ ဆိုလိုသည်မှာသင်သည် SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါအမှားတစ်ခုကြုံတွေ့ရပါက PDO သည်အလိုအလျောက်အချက်ပြခြင်းသို့မဟုတ်ချွင်းချက်မချမှတ်နိုင်သော်လည်းအမှားအယွင်းကိုကိုယ်တိုင်စစ်ဆေးရန်လိုအပ်သည်။

အမှားတစ်ခုဖြစ်ပေါ်သောအခါချွင်းချက်များနှင့် debug များကိုသင်ဖမ်းယူလိုပါကမှန်ကန်သောနည်းလမ်းမှာအမှားနည်းလမ်းမှာ PDO ၏အမှားအယွင်းကို PDO :: Ergomode_Exception ကို သတ်မှတ်ရန်ဖြစ်သည်။ ဤနည်းဖြင့် EURE () သို့မဟုတ်အခြားဒေတာဘေ့စ်စစ်ဆင်ရေးနည်းလမ်းကိုကွပ်မျက်ခံရသည့်အခါအမှားတစ်ခုဖြစ်သောအမှားတစ်ခုဖြစ်သည့်အခါအမှားတစ်ခုဖြစ်သည့်အခါတွင်ချွင်းချက်ချခံရလိမ့်မည်

PDO အမှားကိုင်တွယ်ပုံကိုဘယ်လိုသတ်မှတ်ရမလဲ။

PDO ဥပမာတစ်ခုဖန်တီးသည့်အခါ setattribute () နည်းလမ်းကို အသုံးပြု. အမှားကိုင်တွယ်သည့် mode ကိုသတ်မှတ်နိုင်သည်။ ဥပမာအားဖြင့်အောက်ပါကုဒ်များသည်ခြွင်းချက်ကိုင်တွယ်ဖြေရှင်းနည်းကိုပြသသည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-comment">// ဖန်တီး PDO နမူနာ,နှင့်ချွင်းချက်မှအမှား mode ကိုသတ်မှတ်ပါ</span></span><span>
    </span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-string">'mysql:host=localhost;dbname=testdb'</span></span><span>, </span><span><span class="hljs-string">'username'</span></span><span>, </span><span><span class="hljs-string">'password'</span></span><span>);
    </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">setAttribute</span></span><span>(PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span>, PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>);

    </span><span><span class="hljs-comment">// တစ် ဦး ကွပ်မျက်ခံရ SQL အသေအချာပေြာဆိုချက်</span></span><span>
    </span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"UPDATE users SET name = 'John' WHERE id = 1"</span></span><span>;
    </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">exec</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-comment">// ချွင်းချက်ဖမ်းနှင့်ကိုင်တွယ်</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-variable">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

ဤဥပမာတွင် PDO :: attr_errmode ကို PDO :: Ergomode_Exception to EruMode_Exception သို့ သတ်မှတ်ခြင်း ,

အဘယ်ကြောင့်ခြွင်းချက်သည်ပုံမှန်အားဖြင့်ပစ်ချခြင်းမပြုပါသနည်း

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

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

PDO :: EURD နှင့်အရောင်းအ 0 ယ်များ

၎င်းကိုထုတ်ယူခြင်း ပြင်ပမှအမှားကိုင်တွယ်ခြင်းကိုသာပြုလုပ်နိုင်လိမ့်မည်ဟုသတိပြုသင့်သည်။ အကယ်. သင်ငွေပေးချေမှုအတွင်း၌ exec () ကို အသုံးပြုပါကချွင်းချက်မှန်ကန်စွာမရရှိပါကငွေပေးချေမှု၏ကျူးလွန်မှုသို့မဟုတ် rollback ကိုအလိုအလျောက်လုပ်ဆောင်လိမ့်မည်မဟုတ်ပါ။ အရောင်းအ 0 ယ်များကိုပိုမိုကောင်းမွန်စွာထိန်းချုပ်ရန်အတွက်၎င်းကို beginransacingaction () နှင့် ကျူးလွန်ခြင်းနှင့်ပေါင်းစပ်။ သုံးသင့်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">beginTransaction</span></span><span>();

    </span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"UPDATE users SET name = 'Jane' WHERE id = 1"</span></span><span>;
    </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">exec</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);

    </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">commit</span></span><span>(); </span><span><span class="hljs-comment">// တင်သွင်းမှုတင်သွင်း</span></span><span>
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">rollBack</span></span><span>(); </span><span><span class="hljs-comment">// ပြန်အရောင်းအလှိမ့်</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-variable">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

၎င်းသည်အမှားအယွင်းတစ်ခုဖြစ်ပွားသောအခါအရောင်းအ 0 ယ်များကိုနောက်သို့လှိမ့်ချပြီးဒေတာဘေ့စ်ပြည်နယ်တွင်ရှေ့နောက်ညီညွတ်မှုသေချာနိုင်သည်။

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

    PDO