PHP တွင် PDostatement :: Rowcount နည်းလမ်းသည်သက်ရောက်မှုရှိသောအတန်းအရေအတွက်ရရှိရန်အသုံးပြုသည်။ ဤနည်းလမ်းကိုများသောအားဖြင့် SQL ထုတ်ပြန်ချက်များကို ထည့် သွင်းခြင်း, မွမ်းမံခြင်း , သို့သော်တစ်ခါတစ်ရံ Rowcount သည် ကျွန်ုပ်တို့မျှော်လင့်ထားသည့်အတိုင်းကွဲပြားသောအတန်းအရေအတွက်ကိုရရှိစေသည်။ ဤအခြေအနေကိုအချက်များစွာကြောင့်ဖြစ်ရခြင်းဖြစ်နိုင်သည်။ ဤဆောင်းပါးသည်ဘုံအကြောင်းပြချက်အချို့ကိုအသေးစိတ်မိတ်ဆက်ပေးလိမ့်မည်။
Select Selected ထုတ်ပြန်ချက်များအတွက် RORCOUT ၏အပြုအမူသည်ဒေတာဘေ့စ်ယာဉ်မောင်းနှင့်ဒေတာဘေ့စ်စီမံခန့်ခွဲမှုစနစ်ပေါ် မူတည်. ကွဲပြားနိုင်သည်။ ဥပမာအားဖြင့်:
MySQL : Select queries များအတွက် Rowcount သည် အမှန်တကယ်အတန်းအရေအတွက်ကိုအမြဲတမ်းမပြန်ပါ။ များသောအားဖြင့် delete , update စသည်တို့ကဲ့သို့သောထုတ်ပြန်ချက်များအပြီးပြင်ဆင်ထားသောအတန်းအရေအတွက်ကိုသာပြန်လည်ပေးပို့သည်, ရွေးချယ်မှု တစ်ခုတွင် မူတည်. အချက်အလက်မျိုးစုံကိုအမှန်တကယ်ပြန်လာလျှင်ပင် 0 သို့မဟုတ် 1 ကိုသာပြန်လာနိုင်သည်။ RIV အတန်းအရေအတွက်ရရန်, သင် fetchall သို့မဟုတ် count function ကိုအသုံးပြုရန်လိုအပ်သည်။
Postgresql : Select Telected ထုတ်ပြန်ချက်များအတွက် Rowcount သည် အမှန်တကယ်အကျိုးသက်ရောက်သည့်အတန်းအရေအတွက်ကိုပြန်ပို့သည်။
ထို့ကြောင့်သင်၏ကုဒ်နံပါတ်တွင်မေးမြန်းချက်များကိုသင် ရွေးချယ်ပါက သင်၏ဒေတာဘေ့စ်အမျိုးအစားနှင့်ကားမောင်းသူသည်ဤအင်္ဂါရပ်ကိုအထောက်အကူပြုမလားစစ်ဆေးပါ။
ကွဲပြားခြားနားသောဒေတာဘေ့စ်အင်ဂျင်များသည် Rowcount မှ ပြန်လာသောအတန်းအရေအတွက်ကိုအကျိုးသက်ရောက်နိုင်သည်။ ဥပမာအားဖြင့်, အကယ် . သင် innodb engine ကို MySQL တွင်အသုံးပြုပါက Rowcount သည် 0 မ်းနည်းသည့်ပမာဏကိုအမှန်တကယ်မဖျက်ဘဲပင် 0 င်တန်ဖိုးကိုပြန်ပို့နိုင်သည်။ ဘာဖြစ်လို့လဲဆိုတော့ Innodb က ဒီအပြုအမူတွေကိုလုံးဝဖျက်ပစ်မယ့်အစားဖယ်ရှားပစ်ဖို့ဒီအပြုအမူတွေကိုအမှတ်အသားပြုထားလို့ပါ။ အမှန်တကယ်ရုပ်ပိုင်းဆိုင်ရာဖျက်မှုစစ်ဆင်ရေးများသည်များသောအားဖြင့်အနာဂတ်တွင်တစ်ချိန်ချိန်တွင်ဖြစ်ပွားလေ့ရှိသည်။
ဤကိစ္စတွင်ပြန်လာသောအတန်းအရေအတွက်ကိုအမှန်တကယ်အချက်အလက်များကို ရွေးချယ်ခြင်း ဖြင့်စစ်ဆေးရန်အတည်ပြုနိုင်သည်။
ငွေပေးချေမှုတစ်ခုအနေဖြင့်သင်သည်အချက်အလက်များကိုအချို့သောစစ်ဆင်ရေးများကိုပြုလုပ်ခဲ့ပါကငွေပေးချေမှုကိုမကျူးလွန်ခဲ့ပါကခွဲစိတ်ကုသမှုဒဏ်ကိုထိခိုက်သောအတန်းအရေအတွက်ကို Rowcount သည် မှန်ကန်စွာပြန်ပို့ခြင်းမပြုရ။ အကြောင်းပြချက်မှာငွေပေးငွေယူသည်အပြည့်အဝကိုမကျူးလွန်မိသောကြောင့်ဒေတာဘေ့စ်သည်ဤအပြောင်းအလဲများကိုအမြဲတမ်းမှတ်တမ်းတင်ထားခြင်းမရှိပါ။ ဤကိစ္စတွင်အများအားဖြင့်သတ်မှတ်ထားသောအတန်းများရရှိရန်အတွက်ငွေပေးငွေယူကိုကျူးလွန်ပြီးနောက် Rowcount နည်းလမ်းကိုခေါ်ဆိုခြင်းသည်အကောင်းဆုံးဖြစ်သည်။
အချို့သောဒေတာဘေ့စ်စနစ်များသည် query cache ကိုဖွင့်ပေးသည်။ 0 င် ရောက်ခြင်း , မွမ်းမံခြင်း , ၎င်းသည် cache ဆိုင်ရာမူဝါဒများအသုံးပြုသောအခါအထူးအရေးကြီးသည်။
အကယ်. သင်သည် cache ယန္တရားကိုအသုံးပြုနေပါကစစ်ဆင်ရေးကိုလုပ်ဆောင်ပြီးနောက် cache ကိုရှင်းလင်းရန်သို့မဟုတ် Rowcount Rows ၏မှန်ကန်သောအရေအတွက်ကိုပြန်လည်ရရှိစေရန်အတွက် Reaching လုပ်ရန် cache ကိုစောင့်ဆိုင်းရန်စောင့်ဆိုင်းရန်လိုအပ်နိုင်သည်။
တစ်ခါတစ်ရံ SQL ထုတ်ပြန်ကြေငြာချက်အပေါ်ပြောင်းလဲမှုများသည်ပြောင်းလဲခြင်းသို့မဟုတ်ကွပ်မျက်မှုအစီအစဉ်သည်မျှော်လင့်ချက်များနှင့်မကိုက်ညီသော အစီအစဉ်များ ကိုပြန်လည်ထူထောင်ရန်တွန်းအားပေးနိုင်သည်။ ဥပမာအားဖြင့်အချို့သောမေးမြန်းချက်များကိုပိုမိုထိရောက်သောနည်းဖြင့်အကောင်းဆုံးနည်းဖြင့်အကောင်းဆုံးနည်းဖြင့်သင်ပြောင်းလဲခြင်းမရှိဘဲပြောင်းလဲခြင်းကိုလျှော့ချနိုင်သည်။
Selection Query တွင်သင်က န့်သတ်ချက် သို့မဟုတ် offset ကို အသုံးပြုသောအခါ Rowcount သည် အကန့်အသတ်ရှိသောအတန်းအရေအတွက်ကိုသာပြန်လည်ပေးနိုင်သည်။ ဥပမာအားဖြင့်:
$stmt = $pdo->prepare("SELECT * FROM users LIMIT 10");
$stmt->execute();
echo $stmt->rowCount(); // ပြန်လာလိမ့်မည်0,အစား10
၎င်းကိုရှောင်ရှားရန် ROWCOUT အပေါ်မှီခိုမယ့်အစား query ကိုကွပ်မျက်ပြီးနောက်ဒေတာအားလုံးရရန် fchetlall ကို အသုံးပြုသင့်ပါတယ်။
အချို့ဖြစ်ရပ်များတွင် Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုသောအခါ rowcount သည်အခြားရလဒ်များကိုပြန်လည်ရရှိနိုင်သည်။ အထူးသဖြင့် variable တွေကိုခညျြနှောငျထားသည့်အခါဒေတာဘေ့စ်အင်ဂျင်သည်အချို့သော optimization များကိုထောက်ခံသည့်အခါ Rowcount မှပြန်လာသောတန်ဖိုးသည်မျှော်လင့်ထားသည့်အတိုင်းမဖြစ်နိုင်ပါ။
$stmt = $pdo->prepare("UPDATE users SET status = 'inactive' WHERE last_login < :time");
$stmt->bindParam(':time', $time);
$stmt->execute();
echo $stmt->rowCount(); // ပြန်လာမျှော်လင့်ချက်များနှင့်ကိုက်ညီမည်မဟုတ်ပါ
နောက်ဆုံးအနေဖြင့်အချို့သောဒေတာဘေ့စ်ယာဉ်မောင်းများ (ဥပမာ MySQL သို့မဟုတ် Postgresql ကဲ့သို့) သူတို့ကိုယ်သူတို့ rowcount နှင့်သက်ဆိုင်သောပြ issues နာများသို့မဟုတ်ကန့်သတ်ချက်များရှိနိုင်သည်။ ဤယာဉ်မောင်းများကိုအသုံးပြုသောအခါဒေတာဘေ့စ်ကားမောင်းသူသည်ခွဲစိတ်ကုသမှုတစ်ခုပြုလုပ်သောအခါ Rowcount ၏ပြန်လည်နေရာချထားခြင်းကိုမည်သို့ကိုင်တွယ်သည်ကိုနားလည်ရန်စာရွက်စာတမ်းများနှင့်ဆွေးနွေးရန်အကောင်းဆုံးဖြစ်သည်။