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

MySQLI_STMT :: Store_result ကိုထိရောက်စွာအသုံးပြုနည်း။

gitbox 2025-09-15

Multi-Revi-Set Qu Qu Query ဆိုတာဘာလဲ။

Multi-levice set query ဆိုသည်မှာ SQL Query သည်ရလဒ်အလုံးအရင်းမျိုးစုံပြန်လည်ရောက်ရှိသည့်အခြေအနေကိုရည်ညွှန်းသည်။ ပုံမှန်အားဖြင့်ဤရှာဖွေမှုကို SQL ထုတ်ပြန်ချက်များကိုခွဲထုတ်ခြင်း ( Semi-coln) ကိုခွဲထုတ်သည်။ ဥပမာအားဖြင့်:

 <span><span><span class="hljs-keyword">SELECT</span></span><span> </span><span><span class="hljs-operator">*</span></span><span> </span><span><span class="hljs-keyword">FROM</span></span><span> table1;
</span><span><span class="hljs-keyword">SELECT</span></span><span> </span><span><span class="hljs-operator">*</span></span><span> </span><span><span class="hljs-keyword">FROM</span></span><span> table2;
</span></span>

အထက်ပါစုံစမ်းမှုသည်ရလဒ်နှစ်ခုကိုပြန်လည်ရောက်ရှိလိမ့်မည်။ MySQL အတွက် Multi-query စုံစမ်းမှုကို MySQLI_Multi_query () function မှတဆင့်လုပ်ဆောင်နိုင်ပြီး MySQLI_NEXT_RESELT () မှတစ်ဆင့်နောက်ရလဒ်ကိုပြောင်းလဲနိုင်သည်။

MySQLI_STMMT :: Store_Result () ၏အခန်းကဏ်:

MySQLI extension တွင် MySQLI_STMT :: Store_Result () သည် server မှ client သို့ Query မှသိမ်းဆည်းရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ဆိုလိုသည်မှာစုံစမ်းမှုရလဒ်အလုံးအရင်းမှအချက်အလက်များကိုဒေတာဘေ့စ်ဆာဗာမှ 0 န်ဆောင်မှုခံယူသူ၏မှတ်ဉာဏ်သို့လုံးဝတင်ဆောင်သည်။ အချက်အလက်များကိုအကြိမ်ပေါင်းများစွာကြည့်ရှုနိုင်သည့်အခြေအနေများအတွက် Store_Result () သည် စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်, ဘာကြောင့်လဲဆိုတော့ဒေတာကိုဖတ်သည့်အခါတိုင်းဒေတာဘေ့စ်ဆာဗာနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းကိုရှောင်ရှားသောကြောင့်,

Multi-Rever Set Qu Qu Query အတွက်စိန်ခေါ်မှုများ

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

  1. High Memory Footprint : အကယ်. စုံစမ်းမှုရလဒ်အလုံးအရင်းသည်အလွန်ကြီးမားပါက Store_result () သည် မှတ်ဥာဏ်အလွန်အကျွံသုံးစွဲနိုင်သည့်ရလဒ်တစ်ခုလုံးကိုမှတ်မိစေလိမ့်မည်။

  2. ရလဒ်အလုံးအရင်းကိုအပြည့်အဝမဖတ်ပါ ။ ရလဒ် Multi-variouse query () နှင့် store_result () နှင့် store_result () ကို စနစ်တကျမခေါ်ပါကရလဒ်အချို့ကိုအပြည့်အဝမဖတ်နိုင်ပါ။

  3. Execution ထိရောက်မှုပြ problem နာ - စုံစမ်းမှုတစ်ခုချင်းစီကို Database မှ 0 င်ရောက်ရန်လိုအပ်သည့် Dataset ကို ဒေတာဘေ့စ် မှတင်ရန်လိုအပ်သည်။

MySQLI_STMMT :: Store_result () နည်းလမ်းကိုထိရောက်စွာအသုံးပြုပါ

1 ။ MySQLI_Multi_multi_query () ကိုသုံးပါ

ပထမ ဦး စွာ mysqli_multi_query () function ကိုအသုံးပြုရပါမည်။ ဤလုပ်ဆောင်ချက်သည်ကျွန်ုပ်တို့အား SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်ရန်နှင့်ရလဒ်မျိုးစုံကိုပြန်ပို့ရန်ခွင့်ပြုသည်။ ၎င်းကိုအသုံးပြုသောအခါ MySQLI_Multi_Query () သည် စုံစမ်းမှုရလဒ်အားလုံးကိုပြန်ပို့လိမ့်မည်။ သို့သော်၎င်းသည်ရလဒ်ကိုအလိုအလျောက်မလုပ်ဆောင်နိုင်ပါ။ MySQLI_NEXTEXT_RESELT () မှတဆင့်ရလဒ်တစ်ခုစီမှရရှိသောရလဒ်တစ်ခုစီမှတစ်ဆင့်ကိုယ်တိုင်ကိုယ်ကျကိုယ်တိုင်ပြုလုပ်ရန်လိုအပ်သည်။

 <span><span><span class="hljs-variable">$conn</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-variable">$host</span></span><span>, </span><span><span class="hljs-variable">$user</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$dbname</span></span><span>);

</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM table1; SELECT * FROM table2;"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">multi_query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>)) {
    </span><span><span class="hljs-keyword">do</span></span><span> {
        </span><span><span class="hljs-comment">// လက်ရှိရလဒ် set ကိုရယူပါ</span></span><span>
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">store_result</span></span><span>()) {
            </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
                </span><span><span class="hljs-comment">// ဒေတာတစ်ခုချင်းစီကိုအတန်းတိုင်းလုပ်ငန်းစဉ်</span></span><span>
                </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Data: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'column_name'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
            }
            </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">free</span></span><span>();  </span><span><span class="hljs-comment">// လက်ရှိရလဒ်ကိုလွှတ်ပေးရန်</span></span><span>
        }
    } </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">next_result</span></span><span>());  </span><span><span class="hljs-comment">// နောက်ရလဒ်ကိုရယူပါ</span></span><span>
}

</span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>

2 ။ Store_result ကိုသုံးတဲ့အခါမှတ်ဉာဏ်စီမံခန့်ခွဲမှုကိုအာရုံစိုက်ပါ။

Store_Result () စုံစမ်းမှုရလဒ်တစ်ခုလုံးကိုမှတ်ဉာဏ်အဖြစ်သတ်မှတ်ပြီးကတည်းကအချက်အလက်အမြောက်အများကိုပြုပြင်သည့်အခါမှတ်ဥာဏ်မလုံလောက်ပါ။ မှတ်ဉာဏ်ကိုထိရောက်စွာစီမံနိုင်ရန်အတွက်ရလဒ်အနေဖြင့်ရလဒ်ကိုပြုပြင်ပြီးနောက်မှတ်ဥာဏ်ကိုအခမဲ့ပေးရန် $ ရလဒ် - အခမဲ့ () အခမဲ့ () အခမဲ့ () ကို အခမဲ့အသုံးပြုရန်အကြံပြုသည်။

3 ။ သိုလှောင်မှုအတွက် သာသုံးပါ

မေးမြန်းချက်အားလုံးသည် စတိုးဆိုင်များ ကိုအသုံးပြုခြင်းသည်အထူးသဖြင့်စုံစမ်းမှုရလဒ်များကိုတစ်ပြိုင်တည်းဖတ်ရန်လိုအပ်သည့်အခါ, ရိုးရှင်းသောရွေးချယ်ထားသောမေးမြန်းချက်များအတွက်သင်ဒေတာ၏တစ်စိတ်တစ်ပိုင်းကိုရရန်သာလိုအပ်ပါက , query query quale of query quertion ရလဒ်များသည်သေးငယ်သည် ၎င်းသည်မှတ်ဉာဏ်သုံးစွဲမှုကိုလျော့နည်းစေသည်။

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM table1"</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">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_result</span></span><span>(</span><span><span class="hljs-variable">$column1</span></span><span>, </span><span><span class="hljs-variable">$column2</span></span><span>);
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch</span></span><span>()) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Data: "</span></span><span> . </span><span><span class="hljs-variable">$column1</span></span><span> . </span><span><span class="hljs-string">", "</span></span><span> . </span><span><span class="hljs-variable">$column2</span></span><span> . </span><span><span class="hljs-string">"\n"</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>

4 ။ ရလဒ်ကိုလျှော့ချရန် Pagination Query ကိုသုံးပါ

ရလဒ်အနေဖြင့်အလွန်ကြီးမားလျှင်, စုံစမ်းမှုတစ်ခုစီအတွက်ပြန်လည်ရရှိထားသောမှတ်တမ်းအရေအတွက်ကိုကန့်သတ်ခြင်းအားဖြင့်တစ်ကြိမ်တည်းတွင်တင်ထားသောအချက်အလက်ပမာဏကိုလျှော့ချမည်ဖြစ်ပြီး,

 <span><span><span class="hljs-variable">$page</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>;
</span><span><span class="hljs-variable">$perPage</span></span><span> = </span><span><span class="hljs-number">10</span></span><span>;
</span><span><span class="hljs-variable">$offset</span></span><span> = (</span><span><span class="hljs-variable">$page</span></span><span> - </span><span><span class="hljs-number">1</span></span><span>) * </span><span><span class="hljs-variable">$perPage</span></span><span>;

</span><span><span class="hljs-variable">$sql</span></span><span> = </span><span><span class="hljs-string">"SELECT * FROM table1 LIMIT <span class="hljs-subst">$offset</span></span></span><span>, </span><span><span class="hljs-subst">$perPage</span></span><span>";
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$conn</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$sql</span></span><span>);

</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Data: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'column_name'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

5 ။ စုံစမ်းမှုကွပ်မျက်ချိန်ကိုစောင့်ကြည့်စစ်ဆေးပါ

Store_result ကိုထိရောက်စွာအသုံးပြုခြင်းကိုသေချာစေရန် () Multi-query queries များရှိစုံစမ်းစစ်ဆေးမှုများပြုလုပ်နိုင်ရန်မှာ Query သည်စွမ်းဆောင်ရည်မြှင့်တင်ခြင်းရှိ, အကယ်. စုံစမ်းမှုသည်နှေးကွေးလွန်းပါက SQL ထုတ်ပြန်ချက်များကိုပိုမိုကောင်းမွန်အောင်လုပ်ရန်သို့မဟုတ်တစ်ဆင့်ချင်းလုပ်ဆောင်ခြင်းကိုသင်စဉ်းစားနိုင်သည်။

 <span><span><span class="hljs-variable">$start_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">microtime</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);

</span><span><span class="hljs-comment">// တစ် ဦး စုံစမ်းမှု execute</span></span><span>

</span><span><span class="hljs-variable">$end_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">microtime</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Query Time: "</span></span><span> . (</span><span><span class="hljs-variable">$end_time</span></span><span> - </span><span><span class="hljs-variable">$start_time</span></span><span>) . </span><span><span class="hljs-string">" seconds"</span></span><span>;
</span></span>
  • သက်ဆိုင်သောတက်(ဂ်)များ:

    mysqli_stmt