PHP ၏ PDO ၏ PDO (PHP Data Obserts) Extension ကိုအသုံးပြုသည့်အခါ PDostatement :: Columinnoficate () function သည်လက်ရှိစုံစမ်းမှုရလဒ်တွင်ကော်လံအရေအတွက်ကိုပြန်ပို့ရန်အလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။ သို့သော်စုံစမ်းမှုတစ်ခုတွင် sququery တစ်ခုပါ 0 င်သောအခါဤလုပ်ဆောင်မှု၏အပြုအမူသည် developer ကိုရှုပ်ထွေးစေနိုင်သည်။ ဒီဆောင်းပါးမှာဒီအပြုအမူကိုငါတို့တူးပြီးဘာကိုဘတ်သုံးရမလဲဆိုတာလေ့လာကြလိမ့်မယ်။
PDostatement :: Columincoint () function သည်လက်ရှိစုံစမ်းမှုရလဒ်အနေဖြင့်ကော်လံအရေအတွက်ကိုပြန်ပို့သည်။ ၎င်းကိုအဓိကအားဖြင့်ရွေးချယ်မှုဆိုင်ရာရလဒ်ရလဒ်များအတွက်အသုံးပြုသည်။ အထူးသဖြင့်ကော်လံအချက်အလက်များကိုရယူရန်လိုအပ်သည့်အခါအလွန်လက်တွေ့ကျသည်။ ဥပမာအားဖြင့်, ကျွန်ုပ်တို့သည်ရိုးရှင်းသောရွေးချယ်မှုတစ်ခုလုပ်ဆောင်သောအခါအချက်အလက်များကိုပြန်ပို့သောကော်လံအရေအတွက်ကိုသိရန်ဤလုပ်ဆောင်မှုကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">'SELECT id, name FROM users'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">columnCount</span></span><span>(); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း 2</span></span><span>
</span></span>
ဤဥပမာတွင်မေးမြန်းခြင်းသည်ကော်လံနှစ်ခု ( ID နှင့် အမည် ) ကိုပြန်ပို့သည်။ ထို့ကြောင့် ကျောက်မိုင်း () 2 ။
subquery သည်အသိုက်စုံစမ်းမှုတစ်ခုဖြစ်သည့်အသိုက်စုံစမ်းမှုတစ်ခုဖြစ်သည်။ စုံစမ်းမှုတွင် sucqueries များပါ 0 င်သည့်အတွက် PDostatement ၏အပြုအမူ --: columncoint () သည်မျှော်လင့်ချက်များနှင့်မကိုက်ညီပါ။
ဥပမာ, အောက်ပါမေးခွန်းကိုသုံးသပ်ကြည့်ပါ။
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">'SELECT id, name, (SELECT MAX(age) FROM users) AS max_age FROM users'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">columnCount</span></span><span>(); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း的结果</span></span><span>
</span></span>
ဤဥပမာတွင်ပြင်ပမေးခွန်းတွင်ကော်လံသုံးခုပါရှိသည်။ ID , အမည် နှင့် subquery ရလဒ် ( max_age ) ။ သို့သော် Columnount () မှ ပြန်လာသောရလဒ်သည် subquery ၏ပြန်လာတန်ဖိုးသည်သီးခြားကော်လံတစ်ခုအနေဖြင့်တန်ဖိုးတစ်ခုမျှသာဖြစ်သောကြောင့်ကော်လံအရေအတွက်နှင့်မဆံ့နိုင်ပါ။
Columnofcouncouncouncouncouncouncounter () subquery လုပ်ခြင်းအနေဖြင့်, ပြန်လာနိုင်သည့်ကော်လံအရေအတွက်သည်ပြင်ပစုံစမ်းမှု၏ကော်လံအရေအတွက်ဖြစ်ပြီး, subquery ၏ကော်လံများမပါ 0 င်ပါ။ အကြောင်းပြချက်မှာ PDO သည် sququeries များပါ 0 င်သည့် SQS ထုတ်ပြန်ချက်များကိုပြုလုပ်သောအခါ၎င်းသည် sucqueries ၏ရလဒ်ကိုသီးခြားနယ်ပယ်တစ်ခုအဖြစ်သတ်မှတ်မည့်အစားသီးခြားနယ်ပယ်တစ်ခုအဖြစ်လုပ်ဆောင်သည်။
စုံစမ်းမှုတစ်ခုတွင် sququery sigquery ပါ 0 င်သည့်အခါ columnount () မှ ပြန်လာသောကော်လံအရေအတွက်သည်များသောအားဖြင့်ပြင်ပစုံစမ်းမှုတွင်ကော်လံအရေအတွက်နှင့် subquery ၏ကော်လံများမပါ 0 င်ပါ။ အဆိုပါ subquery ၏ရလဒ်ကို columencouncount ၏ရလဒ်ကိုမထိခိုက်စေဘဲသီးခြားကော်လံအဖြစ်ပြန်လည်ပေးပို့လိမ့်မည်။ အထူးသဖြင့်ရှုပ်ထွေးသောအဆောက်အအုံများတည်ဆောက်ခြင်းသို့မဟုတ်ရှုပ်ထွေးသောရလဒ်များကိုတည်ဆောက်ခြင်းသို့မဟုတ်ခွဲခြမ်းစိတ်ဖြာခြင်းရလဒ်များတည်ဆောက်သည့်အခါအမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်၎င်းသည်အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်အထူးအာရုံစိုက်ရန်လိုအပ်သည်။
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">'SELECT id, name, (SELECT MAX(age) FROM users) AS max_age FROM users'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">columnCount</span></span><span>(); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း 3</span></span><span>
</span></span>
Max_age သည် subquery တစ်ခု၏ရလဒ်ဖြစ်သော်လည်း၎င်းကိုပြင်ပစုံစမ်းမှုတစ်ခု၏ကော်လံတစ်ခုအနေဖြင့်ရရှိသောကြောင့်၎င်း, RIVART သည် စဉ် ဆက်မပြတ်တန်ဖိုးထားသည့်အတွက် Max_age သည် အတူတူ ပင်ဖြစ်သည် ။
သို့သော်, အကယ်. နဂါးငွေ့တန်းသည်မည်သည့်ကော်လံမဆို (ထိုကဲ့သို့သောခြွင်းချက်ဆိုင်ရာဆုံးဖြတ်ချက်ချခြင်းအတွက် sququery) ကိုမပြန်ပါက, အောက်ပါကိစ္စရပ်များတွင် ကော်လံ () သည် ကော်လံများသို့မပြောင်းနိုင်ပါ
<span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">'SELECT id, name, EXISTS (SELECT 1 FROM users WHERE age > 30) AS is_old FROM users'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">columnCount</span></span><span>(); </span><span><span class="hljs-comment">// ထုတ်လုပ်ခြင်း 3</span></span><span>
</span></span>
Segquery သည်ဒေတာများကိုမပြန်သော်လည်း Boolean အဖြစ်ပြန်လည်ရောက်ရှိဆဲဖြစ်သောကြောင့်ပြင်ပစုံစမ်းမှုအတွက်ကော်လံအရေအတွက်သည် 3 ခုဖြစ်နေဆဲဖြစ်သည်။
စုံစမ်းမှုတစ်ခုတွင် subquery တစ်ခုပါ 0 င်သည့်အခါ pdostatement :: columincouncouncouncouncouncouncouncouncouncouncouncouncouncouncouncouncount) မှ ပြန်လာသောကော်လံအရေအတွက်သည်များသောအားဖြင့်ပြင်ပစုံစမ်းမှုအတွက်ကော်လံအရေအတွက်နှင့် subquery အတွက်ကော်လံအရေအတွက်သို့ရေတွက်လိမ့်မည်မဟုတ်ပါ။ ဘာဖြစ်လို့လဲဆိုတော့ PDO သည် sormery ၏ရလဒ်ကိုကော်လံအသစ်တစ်ခုကိုမတူဘဲပြင်ပစုံစမ်းမှု၏နယ်ပယ်တစ်ခုအနေဖြင့်ပြင်ပစုံစမ်းမှုနယ်ပယ်တစ်ခုအနေဖြင့်ကုသမှုခံယူခြင်းဖြစ်သည်။ ထို့ကြောင့် developer များက columencount () ကို အသုံးပြုသောအခါဤအပြုအမူကိုနားလည်ရန်လိုအပ်သည်။