လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> ဘုံ pdostatement :: အမှားအယွင်းအမှားကုဒ်များနှင့်၎င်းတို့၏ဖြေရှင်းချက်။ ဘုံပြ problems နာများကိုဖြေရှင်းနည်းဘယ်လို?

ဘုံ pdostatement :: အမှားအယွင်းအမှားကုဒ်များနှင့်၎င်းတို့၏ဖြေရှင်းချက်။ ဘုံပြ problems နာများကိုဖြေရှင်းနည်းဘယ်လို?

gitbox 2025-09-18
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဤအပိုင်းသည်ဆောင်းပါး၏အကြောင်းအရာနှင့်မသက်ဆိုင်ပါ,သင်ကြိုက်သလောက်ထည့်သွင်းနိုင်ပါတယ် PHP မှတ်ချက်သို့မဟုတ်ကုဒ်ကိုစတင်ပါ</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စတင်ခြင်းပြီးစီးခဲ့သည်\n"</span></span><span>;
</span><span><span class="hljs-variable">$dummy</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

------------------------------------------------------------

</span><span><span class="hljs-comment"># အများအပြားရှိတတ်သော PDOStatement::errorCode အမှားကုဒ်နှင့်၎င်း၏ဖြေရှင်းချက်,မကြာခဏမေးလေ့ရှိသောမေးခွန်းများဖြေရှင်းနည်း?</span></span><span>

တည်နေ PHP အလယ်ပိုင်း,အသုံးပြု PDO(PHP Data Objects)ဒေတာဘေ့စစစ်ဆင်ရေးဖျော်ဖြေတဲ့အခါ,ကျနော်တို့မကြာခဏကြုံတွေ့ရ `</span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">errorCode</span></span><span>` အမှားကုဒ်ပြန်ပို့ပါ。ဤအမှားကုဒ်များနှင့်သူတို့၏အဓိပ္ပါယ်များကိုနားလည်ပါ,အမြန် positioning ပြ issues နာများအတွက်、ဖွံ့ဖြိုးတိုးတက်မှုထိရောက်မှုကိုတိုးတက်အောင်ပြုလုပ်ခြင်းသည်အလွန်အရေးကြီးသည်。ဤဆောင်းပါးသည်သာမန်အမှားကုဒ်များကိုအသေးစိတ်မိတ်ဆက်ပေးပါမည်、အကြောင်းရင်းများနှင့်ဖြေရှင်းနည်းများ,နှင့် troubleshooting စိတ်ကူးများပေးပါ。

</span><span><span class="hljs-comment">## တစ်、PDOStatement::errorCode နိဒါန်း</span></span><span>

`</span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">errorCode</span></span><span>` 方法返回တစ်个 SQLSTATE အမှားကုဒ်,这是တစ်个 </span><span><span class="hljs-number">5</span></span><span> 位的标准化အမှားကုဒ်,ဖော်ထုတ်ခြင်းအတွက်အသုံးပြုခဲ့သည် SQL 执行အလယ်ပိုင်း的错误情况:

- ပထမဂဏန်းနှစ်လုံးသည်အမှားအမျိုးအစားကိုညွှန်ပြသည်(Class)
- နောက်ဆုံးဂဏန်းသုံးလုံးသည်တိကျသောအမှားများကိုညွှန်ပြသည်(Subclass)

Call ဥပမာ:

```php
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM non_existing_table"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$errorCode</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorCode</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorCode</span></span><span>; </span><span><span class="hljs-comment">// ဖြစ်နိုင်သော output ကို "42S02"</span></span><span>
</span></span>

2 ။ သာမန်အမှားကုဒ်များနှင့်အကြောင်းပြချက်

အောက်ပါတို့အပေါ်ဖွံ့ဖြိုးတိုးတက်မှုနှင့်၎င်းတို့၏ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက်များမကြာခဏကြုံတွေ့ရသည့်အမှားကုဒ်များဖြစ်သည်။

1 ။ 00000 - အမှားအယွင်းမရှိပါ

SQL Execution သည်အောင်မြင်သည်ကိုပြသသည်။ ဤသည် PDO ၏ပုံမှန်ပြန်လာဖြစ်ပါတယ်။

2 ။ 01000 - သတိပေးစာ

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

  • အလိုအလျောက်ဒေတာအမျိုးအစားပြောင်းလဲခြင်းသတိပေးချက်

  • SQL ကွပ်မျက်သည်အောင်မြင်သော်လည်းသတိပေးသတင်းစကားတစ်ခုရှိသည်

အသေးစိတ်အချက်အလက်များကို PDostatement မှတစ်ဆင့်ရရှိနိုင်သည်။

3 ။ 23000 - ချိုးဖောက်မှု

ပုံမှန်အခြေအနေများ:

  • မူလသော့ထည့်သွင်းပြန်လုပ်ပါ

  • နိုင်ငံခြားသော့ချက်ကန့်သတ်ချက်မအောင်မြင်ပါ

  • ထူးခြားသောအညွှန်းကိန်းပ conflict ိပက်ခ

ဖြေရှင်းချက် -

  • ထည့်သွင်းဒေတာရှိပြီးသားရှိမရှိစစ်ဆေးပါ

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

  • ထပ်ခါတလဲလဲစစ်ဆင်ရေးကိုရှောင်ရှားရန်စီးပွားရေးယုတ္တိဗေဒကိုညှိပါ

4 ။ 42000 - syntax အမှားသို့မဟုတ် Access ခွင့်ပြုချက်ပြ issues နာများ

ဘုံအကြောင်းပြချက်များ:

  • SQL syntax အမှား

  • စားပွဲပေါ်မှာသို့မဟုတ်လယ်ကွင်းအမည်စာလုံးပေါင်း

  • လက်ရှိဒေတာဘေ့စ်အသုံးပြုသူခွင့်ပြုချက်မလုံလောက်ပါ

Troubleshooting နည်းလမ်း:

  • ပြီးပြည့်စုံသော SQL ကိုပုံနှိပ်။ ဒေတာဘေ့စ်စီမံခန့်ခွဲရေးကိရိယာတွင်ကွပ်မျက်ပါ

  • ဒေတာဘေ့စ်အသုံးပြုသူများ၏ခွင့်ပြုချက်ပြင်ဆင်မှုကိုစစ်ဆေးပါ

  • စားပွဲတင်အမည်နှင့်လယ်ကွင်းနာမမှန်ကန်သောကြောင်းအတည်ပြုပါ

5 ။ HY000 - အထွေထွေအမှား

၎င်းသည်ပုံမှန်အားဖြင့်အမှားကုဒ်တစ်ခုဖြစ်သည်။ ဖြစ်နိုင်သောအကြောင်းပြချက်များမှာ -

  • database ဆက်သွယ်မှုအဆက်ပြတ်

  • Execute Timeout

  • ယာဉ်မောင်းပြည်တွင်းအမှား

ဖြေရှင်းချက် -

  • ဒေတာဘေ့စ connection status ကိုစစ်ဆေးပါ

  • အချိန် configuration ကိုထည့်ပါ

  • ပိုမိုသိရှိလိုပါကဒေတာဘေ့စ်မှတ်တမ်းကိုကြည့်ပါ

6 ။ ဒေတာဘေ့စ် - တိကျသောအမှားကုဒ်

Standard Sqlstate အမှားကုဒ်များအပြင်အချို့သောဒေတာဘေ့စ်အချို့သည် MySQL 23000 နှင့်အတူ MySQL အမှားနံပါတ် 1062 (ထပ်သော့) နှင့်လည်းလိုက်ပါလာသည်။ ဤကိစ္စတွင်ဒေတာဘေ့စ်ယာဉ်မောင်း၏မူလအမှားမက်ဆေ့ခ်ျကို PDostatement ၏တတိယဒြပ်စင်နှင့်ပေါင်းစပ်နိုင်သည်။

 <span><span><span class="hljs-variable">$errorInfo</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorInfo</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorInfo</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>]; </span><span><span class="hljs-comment">// Database Driver မှပြန်လာသော Output အသေးစိတ်အချက်အလက်များ</span></span><span>
</span></span>

3 ။ PDostatement အမှားအယွင်းများကိုဖြေရှင်းရန်နည်းလမ်းများ

  1. SQL ထုတ်ပြန်ကြေငြာချက်စစ်ဆေးပါ SQL ပုံနှိပ်ခြင်းနှင့်ဒေတာဘေ့စ် client ကိုအပေါ်စိစစ်အတည်ပြုလုပ်ဆောင်ပါ။

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

  3. parameter ချည်နှောင်ခြင်း <br> ချည်နှောင်ထားသော parameters များအတွက်အမျိုးအစားနှင့်အမိန့်သည်မှန်ကန်ကြောင်းအတည်ပြုပါ။

  4. ဒေတာဘေ့စ် connection status ကိုအတည်ပြုပါ ဆက်သွယ်မှုကိုမတော်တဆအဆက်ပြတ်နေပါက၎င်းသည်ရန်ကုန်တွင်အမှားတစ်ခုဖြစ်ပေါ်စေနိုင်သည်။

  5. ဒေတာဘေ့စမှတ်တမ်းကိုစစ်ဆေးပါ အမှားအယွင်းများစွာကိုဒေတာဘေ့စ်မှတ်တမ်းများတွင်မှတ်တမ်းတင်ထားသည်။

4 ။ နမူနာကုဒ် - အမှားအယွင်းများနှင့် output ကိုအသေးစိတ်အချက်အလက်များ

 <span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users(id, name) VALUES(:id, :name)"</span></span><span>);
    </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>([</span><span><span class="hljs-string">':id'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">':name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Alice'</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error Code: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorCode</span></span><span>() . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorInfo</span></span><span>());
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Exception message: "</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-string">"\n"</span></span><span>;
}
</span></span>

အထက်ပါနည်းလမ်းများဖြင့်သာမန် pdostatement အမှားများကိုလျင်မြန်စွာရှာဖွေ။ ဖြေရှင်းနိုင်သည်။

5 ။ အကျဉ်းချုပ်

  • PDostatement :: အမှားအယွင်းများကိုလျင်မြန်စွာဆုံးဖြတ်ရန် Errorcode သည် ပုံမှန် sqlstate အမှားကုဒ်များကိုထောက်ပံ့ပေးသည်။

  • ErrorInfo () တိကျသောပြ troubl နာဖြေရှင်းခြင်းအတွက်အသေးစိတ် driver layer အချက်အလက်များကိုပြန်လည်ပေးပို့သည်။

  • ပုံမှန်အမှားများတွင်ချိုးဖောက်မှုများ, syntax အမှားများ, ခွင့်ပြုချက်မလုံလောက်ခြင်းနှင့်အထွေထွေအမှားများပါ 0 င်သည်။

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

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

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

    PDOStatement