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 extension တွင် MySQLI_STMT :: Store_Result () သည် server မှ client သို့ Query မှသိမ်းဆည်းရန်အသုံးပြုသော function တစ်ခုဖြစ်သည်။ ဆိုလိုသည်မှာစုံစမ်းမှုရလဒ်အလုံးအရင်းမှအချက်အလက်များကိုဒေတာဘေ့စ်ဆာဗာမှ 0 န်ဆောင်မှုခံယူသူ၏မှတ်ဉာဏ်သို့လုံးဝတင်ဆောင်သည်။ အချက်အလက်များကိုအကြိမ်ပေါင်းများစွာကြည့်ရှုနိုင်သည့်အခြေအနေများအတွက် Store_Result () သည် စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သည်, ဘာကြောင့်လဲဆိုတော့ဒေတာကိုဖတ်သည့်အခါတိုင်းဒေတာဘေ့စ်ဆာဗာနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းကိုရှောင်ရှားသောကြောင့်,
ရလဒ်ပေါင်းများစွာကိုပြုလုပ်သောအခါရလဒ်တစ်ခုစီသည်ရလဒ်တစ်ခုစီသည်ဒေတာများကိုလွတ်လပ်စွာပြန်လည်တည်ဆောက်သည်။ အကယ်. သင်သည် စတိုးဆိုင်ကိုအသုံးပြုပါက () မှားယွင်းစွာအသုံးပြုပါကအောက်ပါပြ problems နာများကိုဖြစ်ပေါ်စေနိုင်သည်။
High Memory Footprint : အကယ်. စုံစမ်းမှုရလဒ်အလုံးအရင်းသည်အလွန်ကြီးမားပါက Store_result () သည် မှတ်ဥာဏ်အလွန်အကျွံသုံးစွဲနိုင်သည့်ရလဒ်တစ်ခုလုံးကိုမှတ်မိစေလိမ့်မည်။
ရလဒ်အလုံးအရင်းကိုအပြည့်အဝမဖတ်ပါ ။ ရလဒ် Multi-variouse query () နှင့် store_result () နှင့် store_result () ကို စနစ်တကျမခေါ်ပါကရလဒ်အချို့ကိုအပြည့်အဝမဖတ်နိုင်ပါ။
Execution ထိရောက်မှုပြ problem နာ - စုံစမ်းမှုတစ်ခုချင်းစီကို Database မှ 0 င်ရောက်ရန်လိုအပ်သည့် Dataset ကို ဒေတာဘေ့စ် မှတင်ရန်လိုအပ်သည်။
ပထမ ဦး စွာ 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>-></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>-></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>-></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>-></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>-></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>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span></span>Store_Result () စုံစမ်းမှုရလဒ်တစ်ခုလုံးကိုမှတ်ဉာဏ်အဖြစ်သတ်မှတ်ပြီးကတည်းကအချက်အလက်အမြောက်အများကိုပြုပြင်သည့်အခါမှတ်ဥာဏ်မလုံလောက်ပါ။ မှတ်ဉာဏ်ကိုထိရောက်စွာစီမံနိုင်ရန်အတွက်ရလဒ်အနေဖြင့်ရလဒ်ကိုပြုပြင်ပြီးနောက်မှတ်ဥာဏ်ကိုအခမဲ့ပေးရန် $ ရလဒ် - အခမဲ့ () အခမဲ့ () အခမဲ့ () ကို အခမဲ့အသုံးပြုရန်အကြံပြုသည်။
မေးမြန်းချက်အားလုံးသည် စတိုးဆိုင်များ ကိုအသုံးပြုခြင်းသည်အထူးသဖြင့်စုံစမ်းမှုရလဒ်များကိုတစ်ပြိုင်တည်းဖတ်ရန်လိုအပ်သည့်အခါ, ရိုးရှင်းသောရွေးချယ်ထားသောမေးမြန်းချက်များအတွက်သင်ဒေတာ၏တစ်စိတ်တစ်ပိုင်းကိုရရန်သာလိုအပ်ပါက , 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>-></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>-></span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$stmt</span></span><span>-></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>-></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>-></span><span><span class="hljs-title function_ invoke__">close</span></span><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-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>-></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>-></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>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