လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: $ error_list ရှိအမှားအယွင်းများကိုကျွန်ုပ်မည်သို့ထိရောက်စွာကိုင်တွယ်သင့်သနည်း။

MySQLI_STMT :: $ error_list ရှိအမှားအယွင်းများကိုကျွန်ုပ်မည်သို့ထိရောက်စွာကိုင်တွယ်သင့်သနည်း။

gitbox 2025-08-22

MySQLI_STMT :: $ error_list သည် PHP ၏ MySQLI extension ကို အသုံးပြု. ပြင်ဆင်ထားသောထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါအလွန်အရေးကြီးသော debugging tool တစ်ခုဖြစ်သည်။ $ stmt-> အမှားတစ်ခု ကဲ့သို့နောက်ဆုံးအမှားကိုပြန်ပို့မည့်အစားအမှားအယွင်းများအားလုံးနှင့်အတူခင်းကျင်းစေသည်။ အမှားအယွင်းများသည်အလျင်အမြန်သို့မဟုတ်ပြင်ဆင်မှုတစ်ခုတွင်တစ်ချိန်တည်းတွင်အမှားအယွင်းများပြုလုပ်သောအခါဤပစ္စည်းသည်အထူးအရေးကြီးသည်။

သို့သော် developer များက ဒေါ်လာ stmtt-> error_list မှပြန်လာသောအမှားအယွင်းများစွာနှင့်ရင်ဆိုင်ရသောအခါ၎င်းတို့သည်မကြာခဏရှုပ်ထွေးနေကြသောအခါသူတို့ကမကြာခဏရှုပ်ထွေးနေကြတယ်။ ဒီအမှားသတင်းအချက်အလက်ကိုယုတ္တိဗေဒချို့တဲ့ခြင်းမရှိဘဲပြ the နာကိုတိကျစွာရှာတွေ့နိုင်သလိုထိရောက်စွာထုတ်ယူခြင်း,

ဤဆောင်းပါးသည်အောက်ပါရှုထောင့်များမှအမှားမျိုးစုံအမှားမျိုးစုံ၏မဟာဗျူဟာများကိုဆွေးနွေးပါမည်။

1 ။ error_list ၏ဖွဲ့စည်းပုံကိုနားလည်ပါ

$ stmt-> error_list သည် array တစ်ခုသို့ပြန်ပို့သည်။ element တစ်ခုစီသည်အောက်ပါသော့များပါ 0 င်သည့် activitive ခင်းကျင်းသည်။

  • errno : အမှားကုဒ် (ကိန်းဂဏန်း)

  • SQLSTATE : SQLSTATE အမှားအမှတ်အသား (string)

  • ချို့ယွင်းချက် - အမှားမက်ဆေ့ခ်ျ (string)

ပုံမှန်ဖွဲ့စည်းပုံမှာအောက်ပါအတိုင်းဖြစ်သည် -

 <span><span>[
    [
        </span><span><span class="hljs-string">'errno'</span></span><span> =&gt; </span><span><span class="hljs-number">1064</span></span><span>,
        </span><span><span class="hljs-string">'sqlstate'</span></span><span> =&gt; </span><span><span class="hljs-string">'42000'</span></span><span>,
        </span><span><span class="hljs-string">'error'</span></span><span> =&gt; </span><span><span class="hljs-string">'You have an error in your SQL syntax; check the manual...'</span></span><span>
    ],
    [
        </span><span><span class="hljs-string">'errno'</span></span><span> =&gt; </span><span><span class="hljs-number">1048</span></span><span>,
        </span><span><span class="hljs-string">'sqlstate'</span></span><span> =&gt; </span><span><span class="hljs-string">'23000'</span></span><span>,
        </span><span><span class="hljs-string">'error'</span></span><span> =&gt; </span><span><span class="hljs-string">'Column \'name\' cannot be null'</span></span><span>
    ]
]
</span></span>

ဆိုလိုသည်မှာအမှားတစ်ခုသာရှိသည်ဟုယူဆမည့်အစားအမှားတစ်ခုစီကိုသီးခြားစီဆုံးဖြတ်ရန်လိုအပ်သည်ဟုဆိုလိုသည်။

2 ။ Unified Encapsulations အမှားအယွင်းများဆိုင်ရာယုတ္တိဗေဒ

SQL Execution တစ်ခုချင်းစီတွင်ထပ်ခါတလဲလဲလုပ်ဆောင်ခြင်းယုတ္တိဗေဒကိုရှောင်ရှားရန်,

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">handle_stmt_errors</span></span><span>(</span><span><span class="hljs-params">mysqli_stmt <span class="hljs-variable">$stmt</span></span></span><span>) {
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error_list </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$error</span></span><span>) {
        </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"[SQL Error] Code: <span class="hljs-subst">{$error['errno']}</span></span></span><span> | SQLSTATE: </span><span><span class="hljs-subst">{$error['sqlstate']}</span></span><span> | Message: </span><span><span class="hljs-subst">{$error['error']}</span></span><span>");
    }
}
</span></span>

ဤနည်းအားဖြင့်သင်သည်အချိန်ကာလတစ်ခုစီကို ( သို့မဟုတ် ) မအောင်မြင်ပါ။

 <span><span><span class="hljs-keyword">if</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-title function_ invoke__">handle_stmt_errors</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>);
}
</span></span>

3 ။ ပြင်းထန်မှုအားဖြင့် misclassify

အမှားအားလုံးဟာတူညီစွာအရေးကြီးတယ်။ အမှားအယွင်းများအရ ခွဲခြားရန်အကြံပြုသည်။

  • ယုတ္တိရှိသည့်အမှားများ (ထိုကဲ့သို့သောအချည်းနှီးသောဒေတာ, ထူးခြားသောသော့ချက်ပ conflict ိပက်ခ) - အသုံးပြုသူအားပြန်လည်တုံ့ပြန်ခြင်းသို့မဟုတ်စီးပွားရေးချွင်းချက်အဖြစ်မှတ်တမ်းတင်ထားနိုင်သည်။

  • Syntax အမှားအယွင်းများသို့မဟုတ်ဒေတာဘေ့စ်ပျက်ကွက်မှုများ (ဥပမာ SQL စာလုံးပေါင်းအမှားများ, ဆက်သွယ်မှုပျောက်ဆုံးခြင်း) - တောင်းဆိုမှုကိုချက်ချင်းခေါ်ယူသင့်သည်။

သင်သည်ပြင်းထန်မှုကိုဆုံးဖြတ်ရန်ရိုးရှင်းသောမြေပုံစားပွဲကိုသုံးနိုင်သည်။

 <span><span><span class="hljs-variable">$criticalErrors</span></span><span> = [</span><span><span class="hljs-number">1064</span></span><span>, </span><span><span class="hljs-number">2006</span></span><span>, </span><span><span class="hljs-number">2013</span></span><span>];

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error_list </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$error</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-variable">$error</span></span><span>[</span><span><span class="hljs-string">'errno'</span></span><span>], </span><span><span class="hljs-variable">$criticalErrors</span></span><span>)) {
        </span><span><span class="hljs-title function_ invoke__">trigger_error</span></span><span>(</span><span><span class="hljs-string">"လေးနက် database အမှား: <span class="hljs-subst">{$error['error']}</span></span></span><span>", E_USER_ERROR);
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"ပုံမှန်အမှား: <span class="hljs-subst">{$error['error']}</span></span></span><span>");
    }
}
</span></span>

4 ။ ပျောက်ဆုံးနေသောပြင်ဆင်မှု () အမှားအယွင်းများကိုရှောင်ပါ

developer များလျစ်လျူရှုရန်လွယ်ကူသည့်အရာတစ်ခုမှာ ပြင်ဆင်ခြင်း၏ ပျက်ကွက်မှုမှာအမှားအယွင်းများကိုထုတ်ပေးနိုင်သည်။ ၎င်းသည်မှားယွင်းသောပြန်လည်ထူထောင်ရေးတန်ဖိုးဖြင့်တရားစီရင်ခြင်းမပြုနိုင်ပါ။ ၎င်းသည် Error_list ဟုခေါ်ရန်လိုအပ်သည်။

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-variable">$sql</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">foreach</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;error_list </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$error</span></span><span>) {
        </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Prepare Error: <span class="hljs-subst">{$error['error']}</span></span></span><span>");
    }
}
</span></span>

5 ။ ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တွင်အသေးစိတ်မှတ်တမ်းများကိုဖွင့်ပါ

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

 <span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">log_stmt_errors</span></span><span>(</span><span><span class="hljs-params">mysqli_stmt <span class="hljs-variable">$stmt</span></span></span><span>, </span><span><span class="hljs-variable">$display</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error_list </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$error</span></span><span>) {
        </span><span><span class="hljs-variable">$message</span></span><span> = </span><span><span class="hljs-string">"[Error <span class="hljs-subst">{$error['errno']}</span></span></span><span>] </span><span><span class="hljs-subst">{$error['error']}</span></span><span> (SQLSTATE: </span><span><span class="hljs-subst">{$error['sqlstate']}</span></span><span>)";
        </span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-variable">$message</span></span><span>);
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$display</span></span><span>) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"&lt;div class=\"sql-error\"&gt;<span class="hljs-subst">$message</span></span></span><span>&lt;/div&gt;";
        }
    }
}
</span></span>

6 ။ နိဂုံးချုပ်

MySQLI_STMT :: $ error_list သည် သော့ချက်နည်းသော်လည်းအစွမ်းထက်သောအမှားပြ troubl နာဖြေရှင်းခြင်းကိရိယာဖြစ်သည်။ သင်ရှုပ်ထွေးသော SQL operations များကိုဖျော်ဖြေတင်ဆက်သည့်အခါ parameters များစွာကိုဖြည့်ဆည်းသောအခါသို့မဟုတ်ဒေတာစားပွဲများစွာကိုချိတ်ဆက်နေသည့်အခါအမှားတစ်ခုထက်ပိုသောအမှားများကိုမကြာခဏဖော်ပြလေ့ရှိသည်။ ဤအမှားများကိုမှန်ကန်စွာခွဲခြားခြင်းနှင့်ခွဲခြားသတ်မှတ်ခြင်းသည်အမှားအယွင်းများကိုလျင်မြန်စွာပြင်ဆင်ရန်သာမကစနစ်အားစိတ် 0 င်စားမှုကိုတိုးတက်စေသည်။

$ stmt-> အမှား - မာစတာ error_list ကိုမကြည့်ပါနှင့်။ Debugging SQL သည်အဆင့်တစ်ခုထက်ပိုပြီးစွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်ကိုသင်တွေ့လိမ့်မည်။

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

    mysqli_stmt