လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> သွင်းမအောင်မြင်သည့်အခါ MySQLI_STMMT ၏ပြန်လာတန်ဖိုး - $ Insert_id သည်မှန်ကန်သောသို့မဟုတ်ပုံမှန်မဟုတ်သောလား။

သွင်းမအောင်မြင်သည့်အခါ MySQLI_STMMT ၏ပြန်လာတန်ဖိုး - $ Insert_id သည်မှန်ကန်သောသို့မဟုတ်ပုံမှန်မဟုတ်သောလား။

gitbox 2025-09-30

Database Operations အတွက် PHP ၏ MySQLI extension ကိုအသုံးပြုသောအခါ MySQLI_STMT :: $ Insert_id သည်အဓိကအားဖြင့်နောက်ဆုံးသွင်းယူလည်ပတ်မှုဖြင့်ထုတ်လုပ်သည့်အလိုအလျောက်တိုးပွားလာသော ID ကိုရရှိရန်အသုံးပြုသည်။ ပုံမှန်အားဖြင့်, အကယ်. insert ခွဲစိတ်ကုသမှုတစ်ခုပြုလုပ်သောအခါ, အကယ်. စစ်ဆင်ရေးအောင်မြင်နိုင်လျှင် $ Insert_id သည် ထည့်သွင်းထားသောမှတ်တမ်း၏ ID ကိုကိုယ်စားပြုသည့်ကိန်းဂဏန်းတစ်ခုသို့ပြန်ပို့သည်။ သွင်းခြင်းမအောင်မြင်ပါက၎င်းသည် 0 င်သို့မဟုတ်အခြားပုံမှန်မဟုတ်သောတန်ဖိုးများကိုပြန်ပို့သည်။ ဒါကြောင့်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက် MySQLI_STMMT ၏ပြန်လာတန်ဖိုး - $ insert_id သည်မှန်ကန်မှုရှိမရှိဆုံးဖြတ်ရန်မည်သို့ဆုံးဖြတ်ရမည်။

1 ။ MySQLI_STMMT ၏အခြေခံ function ကို :: $ insert_id

MySQLI_STMT :: $ Insert_id သည် MySQLI_STMT Object ၏ attribute တစ်ခုဖြစ်သည်။ ၎င်းသည်ဤဖော်ပြချက်အရပြုလုပ်ခဲ့သောလတ်တလောသွင်းကုန်စစ်ဆင်ရေးမှထုတ်လုပ်သောအလိုအလျောက်တိုးပွားလာသော ID ကိုသိမ်းဆည်းထားသည်။ ပုံမှန်အားဖြင့်၎င်း၏ပြန်လာတန်ဖိုးများမှာ -

  • အောင်မြင်စွာထည့်သွင်းပါ။ အလိုအလျောက်တိုးချဲ့ရန်အတွက်အော်တိုတိုးချဲ့ရန်အတွက် - ထည့်သွင်းစံချိန်၏အလိုအလျောက်တိုးပွားလာ ID ကိုပြန်ပို့သည်။

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

  • Auto-increment field မပါပဲစစ်ဆင်ရေးကိုထည့်သွင်းပါ - အလိုအလျောက်တိုးချဲ့နယ်ပယ်အစု၏မရှိခြင်း၌ Insert_ID သည် 0 င် 0 င် 0 င် 0 င် 0 င်လိမ့်မည်။

2 ။ MySQLI_STMT :: $ insert_id သည် မှန်ကန်သည်ကိုဆုံးဖြတ်ပါ

MySQLI_STMT ၏ပြန်လာတန်ဖိုး - $ Insert_id သည်မှန်ကန်မှုရှိ, မရှိဆုံးဖြတ်ရန်မှာသင်သော့ချက်အချက်နှစ်ချက်ကိုနားလည်ရန်လိုအပ်သည်။

  • ပြန်လာတန်ဖိုး 0 ဟုတ်မဟုတ်ဆုံးဖြတ်သည်။

  • ထည့်သွင်းစစ်ဆင်ရေးအောင်မြင်မှုရှိမရှိဆုံးဖြတ်ပါ။

2.1 ပြန်လာတန်ဖိုး 0 ဟုတ်မဟုတ်ဆုံးဖြတ်ခြင်း

အကယ်. Insert စစ်ဆင်ရေးသည်အောင်မြင်ပြီးအလိုအလျောက်တိုးပွားလာသည့်အကွက်တစ်ခုပါ 0 င်ပါက $ Insert_id သည် 0 ထက်ပိုသောကိန်းဂဏန်းကိုပြန်ပို့သင့်သည်။ 0 ဖြစ်ပါကအောက်ပါအခြေအနေများပေါ်ပေါက်လာနိုင်သည်။

  1. Insert လည်ပတ်မှုမအောင်မြင်ပါ (SQL အမှားများ, ပ conflicts ိပက်ခများစသဖြင့်) ။

  2. လက်ရှိဇယားတွင်အလိုအလျောက်တိုးချဲ့လယ်ကွင်းအစုံမရှိပါ။

  3. အဆိုပါသွင်းသွင်းသည်အောင်မြင်ခဲ့ပေမယ့်စားပွဲတင်သည်အော်တို increment field (ဥပမာ - auto_incrent setting မပါ)

ထို့ကြောင့် $ Insert_id 0 ဟုတ်မဟုတ်ဆုံးဖြတ်ရန်အလွန်အရေးကြီးသည်, သို့သော်ဤတစ်ခုတည်းသောအပြည့်အ 0 သည်အပြည့်အ 0 သည်အပြည့်အဝမအတည်ပြုနိုင်ပါ။

2.2 ထည့်သွင်းမှုစစ်ဆင်ရေးအောင်မြင်မှုရှိမရှိဆုံးဖြတ်ရန်

ထည့်သွင်းခြင်းစစ်ဆင်ရေးအောင်မြင်မှုရှိမရှိတိကျစွာဆုံးဖြတ်ရန်အတွက် $ insert_id ကို စစ်ဆေးခြင်းအပြင် MySert_IST_ID ကိုစစ်ဆေးရန်အပြင် MySQLI_STMT :: execute () သို့မဟုတ် mySqli_stmt ::

  • MySQLI_STMT :: Execute () - Execute () - Reward Transfer Execute သည်အောင်မြင်မှုရရန်အောင်မြင်သည်။

  • MySQLI_STMM :: Temper_rows : ဘေးဒဏ်သင့်သည့်အတန်းအရေအတွက်ကိုပြန်ပို့သည်။ 0 င်ပါက၎င်းသည်မှတ်တမ်းမပါ 0 င်ကြောင်းဆိုလိုသည်။ SQL ကြေငြာချက်ကိုအောင်မြင်စွာကွပ်မျက်ခံရရင်တောင်,

3 ။ သွင်းပျက်ကွက်မှုကိုကိုင်တွယ်ပါ

အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အကန့်အ သတ် များချိုးဖောက်ခြင်း ,

3.1 နမူနာကုဒ်: ID ကိုထည့်သွင်းခြင်းနှင့်အတည်ပြုခြင်း

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ</span></span><span>
</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">"password"</span></span><span>, </span><span><span class="hljs-string">"database"</span></span><span>);

</span><span><span class="hljs-comment">// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Connection failed: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;connect_error);
}

</span><span><span class="hljs-comment">// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်</span></span><span>
</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-string">"INSERT INTO my_table (name, age) VALUES (?, ?)"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"si"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>);

</span><span><span class="hljs-comment">// parameters တွေကိုချည်နှောင်ခြင်းနှင့် execute</span></span><span>
</span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">"John"</span></span><span>;
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">25</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-comment">// အောင်မြင်စွာကွပ်မျက်,စစ်ဆေးကြည့်ရှု insert_id</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id &gt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာထည့်ပါ,ဖြစ်သော ID ဟုတ်ကဲ့: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာထည့်ပါ,ဒါပေမယ့်အဘယ်သူမျှမအလိုအလျောက်တိုးထုတ်ပေးသည် ID。"</span></span><span>;
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-comment">// Execution မအောင်မြင်ပါ,output error message</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">$stmt</span></span><span>-&gt;error;
}

</span><span><span class="hljs-comment">// ရုပ်သိမ်းခြင်း statement နှင့်ဆက်သွယ်ပါ</span></span><span>
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

အထက်ပါကုဒ်တွင်ထည့်သွင်းမှုပြုလုပ်ပြီးနောက်ကျွန်ုပ်တို့သည်ပထမ ဦး ဆုံး ဒေါ်လာ stmt-> Insert_id ကို ပထမဆုံးစစ်ဆေးသည်။ အကယ်. ပြန်လာသောတန်ဖိုးသည် 0 ထက်ကြီးပါက, ထည့်သွင်းသည်အောင်မြင်မှုပြီးအော်တိုတိုးချဲ့ ID ကိုထုတ်လုပ်သည်။ အကယ်. ပြန်လာသောတန်ဖိုးသည် 0 ဖြစ်ပါကထည့်သွင်းမှုစစ်ဆင်ရေးမအောင်မြင်ပါကသို့မဟုတ်ထည့်သွင်းထားသောဇယားသည်အလိုအလျောက်တိုးချဲ့ထားသောအစုအဝေးမရှိပါ။

3.2 MySQLI_STMT :: ဘေးဒဏ် သင့်သည့်အတန်းအရေအတွက်ကိုစစ်ဆေးရန် Temper_rows ကိုအသုံးပြုပါ

Insert_id ကို စစ်ဆေးခြင်းမပြုမီ Insert သည်အမှန်တကယ်ကွပ်မျက်ခံရသည်ကိုထပ်မံဆုံးဖြတ်ရန်အတွက် ဘေးဒဏ်သင့်မှုကို အသုံးပြုရန်အကောင်းဆုံးဖြစ်သည်။

 <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-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;affected_rows &gt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာထည့်ပါ,ဖြစ်သော ID ဟုတ်ကဲ့: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
    } </span><span><span class="hljs-keyword">else</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-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Execution မအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error;
}
</span></span>

4 ။ ခြွင်းချက်ကိုင်တွယ်

ခြွင်းချက်များကိုဖမ်းရန် ပို. ယုံကြည်စိတ်ချစွာ ဖမ်းဆီးရန်ကြိုးစားခြင်းသည် ဒေတာဘေ့စ်ဆက်သွယ်မှုအမှားများသို့မဟုတ် SQL အမှားများကိုဖမ်းရန်အသုံးပြုနိုင်သည်။ MySQLI ကိုယ်တိုင်က Try-Catch Mericism ကိုမထောက်ပံ့သော်လည်းအပြောင်းအလဲများအတွက်ထုံးစံနည်းလမ်းများအတွက်ခြွင်းချက်များကိုကျွန်ုပ်တို့ချွင်းနိုင်သည်။

 <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">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO my_table (name, age) VALUES (?, ?)"</span></span><span>);
    </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"si"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$age</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-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">"မအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;error);
    }

    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id &gt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာထည့်ပါ,ဖြစ်သော ID ဟုတ်ကဲ့: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;insert_id;
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာထည့်ပါ,ဒါပေမယ့်အဘယ်သူမျှမအလိုအလျောက်တိုးထုတ်ပေးသည် ID。"</span></span><span>;
    }
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </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">"ခြွင်းချက်များ: "</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>

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

MySQLI_STMT :: $ insert_id သည် မှန်ကန်မှုရှိမရှိဆုံးဖြတ်ရန်မှာ Return Value သည် 0 င် ဟုတ်မဟုတ်ကိုကျွန်ုပ်တို့သာမှီခိုအား ထား. မရပါ, ခွဲစိတ်မှု၏မှန်ကန်မှုကိုသေချာစေရန်, execute () နှင့် ဘေးဒဏ်သင့်သည့်ဘေးဒဏ်သင့်မှု ၏ပြန်လည်နေရာချထားခြင်းတန်ဖိုးကိုတစ်ချိန်တည်းတွင်စစ်ဆေးရန်နှင့်သင့်လျော်သောခြွင်းချက်ကိုင်တွယ်ယန္တရားများမှတစ်ဆင့်ဖြစ်နိုင်ချေအမှားများကိုစစ်ဆေးရန်အကြံပြုပါသည်။

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

    mysqli_stmt