<span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/*
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှု၌,ကျနော်တို့မကြာခဏကြုံတွေ့ရ MySQL စုံစမ်းမှုကွပ်မျက်မှုမအောင်မြင်ပါ,အထူးသဖြင့် Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုတဲ့အခါ(Prepared Statements)နာရီ。ပေမဲ့ mysqli ထောက်ပံ့ error နှင့် errno အမှားသတင်းအချက်အလက်ရရန် attribute တွေ,သို့သော်ဤအများအားဖြင့်အမှားတစ်ခုသာပြန်လာသည်。သင်ပိုမိုအသေးစိတ်ရလိုလျှင်、စနစ်တကျအမှားမက်ဆေ့ခ်ျကို,mysqli_stmt::$error_list ၎င်းသည်အလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်。
------------------------------------------------------------
*/</span>
</span><span><span class="hljs-comment"># အသုံးပြု mysqli_stmt::$error_list ဉီးစီး MySQL Syntax အမှားများကို debugging လုပ်ရန်လက်တွေ့ကျသောအချက်များကဘာတွေလဲ?</span></span><span>
在အသုံးပြု PHP ၏ mysqli 扩展ဉီးစီး数据库操作နာရီ,`mysqli_stmt::</span><span><span class="hljs-variable">$error_list</span></span><span>` 属性能够为开发者提供一个包含所有错误信息၏数组。ဒီ debug ဖို့ရှုပ်ထွေးသည် SQL 查询နာရီ尤其有帮助,ဘာဖြစ်လို့လဲဆိုတော့အဲဒါဟာပထမဆုံးအမှားတစ်ခုပဲပါ,还会列出执行过程中出现၏所有错误细节。
</span><span><span class="hljs-comment">### 1. `mysqli_stmt::$error_list` ၏返回结构</span></span><span>
`</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list` တစ်ခုခင်းကျင်းပြန်လာလိမ့်မည်,其中၏每个元素都是一个关联数组,အောက်ပါကီးတန်ဖိုးများပါဝင်သည်:
- **errno**:အမှားကုဒ်
- **sqlstate**:SQLSTATE 标准化အမှားကုဒ်
- **error**:错误၏详细描述
ဥပမာပြန်လာတန်ဖိုး:
```php
[
[
</span><span><span class="hljs-string">"errno"</span></span><span> => </span><span><span class="hljs-number">1064</span></span><span>,
</span><span><span class="hljs-string">"sqlstate"</span></span><span> => </span><span><span class="hljs-string">"42000"</span></span><span>,
</span><span><span class="hljs-string">"error"</span></span><span> => </span><span><span class="hljs-string">"You have an error in your SQL syntax; ..."</span></span><span>
]
]
</span></span>Debugging လုပ်ငန်းစဉ်အတွင်းအထူးသဖြင့် SQL ထုတ်ပြန်ချက်များသည်ကြာရှည်စွာသို့မဟုတ် parameter များစွာပါ 0 င်သည့်အခါ, ဤအချိန်တွင်ကျွန်ုပ်တို့သည်အမှားအယွင်းများအားလုံးကိုတစ်ပြိုင်နက်တည်းကြည့်ရှုရန် $ stmt-> error_list ကို ဖြတ်သန်းနိုင်သည်။
နမူနာကုဒ်:
<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">"pass"</span></span><span>, </span><span><span class="hljs-string">"test"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users WHERE id = ?"</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-variable">$stmt</span></span><span>) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Prepare failed: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error);
}
</span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-string">"abc"</span></span><span>; </span><span><span class="hljs-comment">// ရည်ရွယ်ချက်ရှိရှိအမှားအမျိုးအစား</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$id</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-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list) {
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>->error_list </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$err</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error Code: <span class="hljs-subst">{$err['errno']}</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"SQLSTATE: <span class="hljs-subst">{$err['sqlstate']}</span></span></span><span>\n";
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Message: <span class="hljs-subst">{$err['error']}</span></span></span><span>\n\n";
}
}
</span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>ဖွံ့ဖြိုးရေးပတ်ဝန်းကျင်တွင်ဖွင့်လှစ် <br> Database ဖွဲ့စည်းပုံသို့မဟုတ်အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်ယိုစိမ့်မှုများကိုရှောင်ရှားရန် Debug Mode တွင်သာအသေးစိတ်အချက်အလက်များသို့မဟုတ် debug mode တွင်သာသုံးပါ
သစ်ထုတ်လုပ်ရေးနှင့်အတူပေါင်းစပ် ပိုမိုလွယ်ကူသည့်နောက်ဆက်တွဲခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်ပြ problem နာ traceback အတွက် log file ကို log file သို့ $ stmt-> error_list output ကို ရေးပါ
SQLSTATE နှိုင်းယှဉ်ချက်ဇယားနှင့်ပူးပေါင်းပါ။ <br> SQLState Code (ထပ်တူပြုခြင်းအမှားများအရပြ problem နာအမျိုးအစားများကိုလျင်မြန်စွာရှာဖွေတွေ့ရှိပါ။
MySQLI_STMT-> အမှား နှင့်နှိုင်းယှဉ်လျှင် MySQLI_STMT :: error_list နှင့်နှိုင်းယှဉ်လျှင်အထူးသဖြင့်ရှုပ်ထွေးသောမေးမြန်းချက်များနှင့်ကြိုတင်သတ်မှတ်ထားသည့်ထုတ်ပြန်ချက်များကိုသိသိသာသာတိုးတက်စေသည့်အခါအထူးသဖြင့်ရှုပ်ထွေးသောရှာဖွေမှုများနှင့်ကြိုတင်သတ်မှတ်ထားသည့်ထုတ်ပြန်ချက်များကိုထုတ်ပြန်သည့်အခါ။ ၎င်းကိုမှန်ကန်စွာအသုံးပြုခြင်းသည် SQL Syntax အမှားအယွင်းများနှင့်ကွပ်မျက်ပြ problems နာများကိုပိုမိုမြန်ဆန်စွာဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်။
<span></span>
သက်ဆိုင်သောတက်(ဂ်)များ:
mysqli_stmt MySQL