<span><span><span class="hljs-meta"><?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">?></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>-></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>-></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>-></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>အောက်ပါတို့အပေါ်ဖွံ့ဖြိုးတိုးတက်မှုနှင့်၎င်းတို့၏ဖြစ်နိုင်ချေရှိသောအကြောင်းပြချက်များမကြာခဏကြုံတွေ့ရသည့်အမှားကုဒ်များဖြစ်သည်။
SQL Execution သည်အောင်မြင်သည်ကိုပြသသည်။ ဤသည် PDO ၏ပုံမှန်ပြန်လာဖြစ်ပါတယ်။
များသောအားဖြင့်ဆိုးဝါးသောသတိပေးချက်များအတွက်အသုံးပြုလေ့ရှိသည်။
အလိုအလျောက်ဒေတာအမျိုးအစားပြောင်းလဲခြင်းသတိပေးချက်
SQL ကွပ်မျက်သည်အောင်မြင်သော်လည်းသတိပေးသတင်းစကားတစ်ခုရှိသည်
အသေးစိတ်အချက်အလက်များကို PDostatement မှတစ်ဆင့်ရရှိနိုင်သည်။
ပုံမှန်အခြေအနေများ:
မူလသော့ထည့်သွင်းပြန်လုပ်ပါ
နိုင်ငံခြားသော့ချက်ကန့်သတ်ချက်မအောင်မြင်ပါ
ထူးခြားသောအညွှန်းကိန်းပ conflict ိပက်ခ
ဖြေရှင်းချက် -
ထည့်သွင်းဒေတာရှိပြီးသားရှိမရှိစစ်ဆေးပါ
နိုင်ငံခြားသော့များနှင့်ဆက်စပ်သောအချက်အလက်များတည်ရှိကြောင်းသေချာပါစေ
ထပ်ခါတလဲလဲစစ်ဆင်ရေးကိုရှောင်ရှားရန်စီးပွားရေးယုတ္တိဗေဒကိုညှိပါ
ဘုံအကြောင်းပြချက်များ:
SQL syntax အမှား
စားပွဲပေါ်မှာသို့မဟုတ်လယ်ကွင်းအမည်စာလုံးပေါင်း
လက်ရှိဒေတာဘေ့စ်အသုံးပြုသူခွင့်ပြုချက်မလုံလောက်ပါ
Troubleshooting နည်းလမ်း:
ပြီးပြည့်စုံသော SQL ကိုပုံနှိပ်။ ဒေတာဘေ့စ်စီမံခန့်ခွဲရေးကိရိယာတွင်ကွပ်မျက်ပါ
ဒေတာဘေ့စ်အသုံးပြုသူများ၏ခွင့်ပြုချက်ပြင်ဆင်မှုကိုစစ်ဆေးပါ
စားပွဲတင်အမည်နှင့်လယ်ကွင်းနာမမှန်ကန်သောကြောင်းအတည်ပြုပါ
၎င်းသည်ပုံမှန်အားဖြင့်အမှားကုဒ်တစ်ခုဖြစ်သည်။ ဖြစ်နိုင်သောအကြောင်းပြချက်များမှာ -
database ဆက်သွယ်မှုအဆက်ပြတ်
Execute Timeout
ယာဉ်မောင်းပြည်တွင်းအမှား
ဖြေရှင်းချက် -
ဒေတာဘေ့စ connection status ကိုစစ်ဆေးပါ
အချိန် configuration ကိုထည့်ပါ
ပိုမိုသိရှိလိုပါကဒေတာဘေ့စ်မှတ်တမ်းကိုကြည့်ပါ
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>-></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>SQL ထုတ်ပြန်ကြေငြာချက်စစ်ဆေးပါ SQL ပုံနှိပ်ခြင်းနှင့်ဒေတာဘေ့စ် client ကိုအပေါ်စိစစ်အတည်ပြုလုပ်ဆောင်ပါ။
အပြည့်အစုံကိုကြည့်ပါ ပြ problems နာများကိုဆန်းစစ်ရန်ကူညီရန်အသေးစိတ်အချက်အလက်များရရှိရန်အမှားအယွင်းများကိုအသုံးပြုရန် အမှားအယွင်းများကို သုံးပါ။
parameter ချည်နှောင်ခြင်း <br> ချည်နှောင်ထားသော parameters များအတွက်အမျိုးအစားနှင့်အမိန့်သည်မှန်ကန်ကြောင်းအတည်ပြုပါ။
ဒေတာဘေ့စ် connection status ကိုအတည်ပြုပါ ဆက်သွယ်မှုကိုမတော်တဆအဆက်ပြတ်နေပါက၎င်းသည်ရန်ကုန်တွင်အမှားတစ်ခုဖြစ်ပေါ်စေနိုင်သည်။
ဒေတာဘေ့စမှတ်တမ်းကိုစစ်ဆေးပါ အမှားအယွင်းများစွာကိုဒေတာဘေ့စ်မှတ်တမ်းများတွင်မှတ်တမ်းတင်ထားသည်။
<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>-></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>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>([</span><span><span class="hljs-string">':id'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">':name'</span></span><span> => </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>-></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>-></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>-></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 အမှားများကိုလျင်မြန်စွာရှာဖွေ။ ဖြေရှင်းနိုင်သည်။
PDostatement :: အမှားအယွင်းများကိုလျင်မြန်စွာဆုံးဖြတ်ရန် Errorcode သည် ပုံမှန် sqlstate အမှားကုဒ်များကိုထောက်ပံ့ပေးသည်။
ErrorInfo () တိကျသောပြ troubl နာဖြေရှင်းခြင်းအတွက်အသေးစိတ် driver layer အချက်အလက်များကိုပြန်လည်ပေးပို့သည်။
ပုံမှန်အမှားများတွင်ချိုးဖောက်မှုများ, syntax အမှားများ, ခွင့်ပြုချက်မလုံလောက်ခြင်းနှင့်အထွေထွေအမှားများပါ 0 င်သည်။
စနစ်တကျစုံစမ်းစစ်ဆေးရေးလုပ်ငန်းစဉ်သည် developer များပြ problems နာများကိုအချိန်တိုအတွင်းနေရာချထားပြီးဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာစွမ်းဆောင်ရည်ကိုတိုးတက်စေသည်။
PDO အမှားကုဒ်များကိုကျွမ်းကျင်ခြင်းနှင့်ပြ ubl နာဖြေရှင်းခြင်းနည်းလမ်းများသည်သင်၏ဒေတာဘေ့စ်စစ်ဆင်ရေးများပိုမိုလုံခြုံစိတ်ချရလွယ်ကူပြီးမသင့်လျော်သောအမှားအယွင်းများဖြင့်ပုံမှန်မဟုတ်သောအစီအစဉ်ပြတ်တောက်ခြင်းကိုရှောင်ရှားနိုင်သော်လည်းပိုမိုလုံခြုံမှုရှိစေနိုင်သည်။
<span></span>
သက်ဆိုင်သောတက်(ဂ်)များ:
PDOStatement