PHP တွင် PDO သည်လူကြိုက်များသောလူကြိုက်များသောဒေတာဘေ့စ်များကိုအသုံးပြုရန်, PDostatement :: Select စုံစမ်းမှုလည်ပတ်မှုကြောင့်ထိခိုက်သောအတန်းအရေအတွက်ကိုရရန် PDCount နည်းလမ်းကိုအသုံးပြုသည်။ ဒီအခြေအနေကသင့်ကိုရှုပ်ထွေးစေနိုင်တယ်, ဒီဆောင်းပါးကဒီဖြစ်စဉ်ကိုရှင်းပြပြီးဘယ်လိုရှောင်ရှားရမယ်ဆိုတာရှင်းပြလိမ့်မယ်။
PHP တွင် PDostatement :: SQL Query များကိုကွပ်မျက်သည့်အခါသက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်လည်ပေးပို့ရန်အတွက် PDCount (RowCount () ကို ပြန်လည်ရောက်ရှိရန်အသုံးပြုသည်။ Select Selecties အတွက် rowcount () rowcount () စုံစမ်းမှုရလဒ်အတွက်အတန်းအရေအတွက်ကိုပြန်ပို့သင့်ပါတယ်။ သို့သော်၎င်းသည်စုံစမ်းမှုမှပြန်လာသောအတန်းအရေအတွက်ကိုတိတိကျကျမဖော်ပြပါ။ အထူးသဖြင့် Select Selecties တွင် 0 င်များပြန်ပို့ရန်မှာတွေ့ရလေ့ရှိသည်။
PDostatement ၏အပြုအမူ :: Rowcount () နည်းလမ်းကိုဒေတာဘေ့စ်ယာဉ်မောင်းကထိခိုက်သည်။ ကွဲပြားခြားနားသောဒေတာဘေ့စ်အင်ဂျင်များပေါ် မူတည်. Regcount () သည် selection query ကိုကွပ်မျက်သည့်အခါမျှော်လင့်ထားသည့်အတိုင်းမျှော်လင့်ထားသည့်အတန်းအရေအတွက်ကိုမပြန်နိုင်ပါ။ ဘုံအကြောင်းပြချက်များတွင်:
ကွဲပြားခြားနားသောဒေတာဘေ့စ်များအကြားအကောင်အထည်ဖော်မှုကွဲပြားခြားနားမှု - ဒေတာဘေ့စ်စနစ်များအားလုံးသည် PDostatement ၏မှန်ကန်သောအပြုအမူကိုမထောက်ပံ့ပါ ။ ဥပမာ MySQL driver သည် Selection Query ကို Execute လုပ်သည့်အခါ ROWCOUT () သည် ရှာဖွေမှုတွင်အတန်းအရေအတွက်ကိုမပြန်ပါ။
အမှန်တကယ်ကွပ်မျက်ခံရခြင်းမဟုတ်ပါ။ အချို့သောကိစ္စရပ်များတွင် PDostatement :: Rowcount () သည် Rowcount () သည် Rowcount () သည် Rowcount () သည် Rowcount () သည် Rowcount () သည်အတန်းကိုပြန်ပေးနိုင်သည်။ ၎င်းသည်ပုံမှန်အားဖြင့်ဒေတာဘေ့စ်မောင်းနှင်မှုဆိုင်ရာအကောင်းမြင်သို့မဟုတ် cache မေးမြန်းချက်များတွင်တွေ့ရှိရသည်။
ဒေတာဘေ့စ်ကိုအကောင်းမြင်ခြင်းနှင့်ကြိုတင်ပြင်ဆင်ခြင်း - အချို့သောကိစ္စရပ်များတွင် PDostatement :: Rowcount () သည် 0 င် 0 င် 0 သည် 0 သို့ပြန်ပို့နိုင်သည်။ ဘာဖြစ်လို့လဲဆိုတော့ဒေတာဘေ့စ်ကိုရှာဖွေမှုတစ်ခုလုပ်ဆောင်သောအခါအတန်းအရေအတွက်အတိအကျကိုမပြန်နိုင်သော်လည်းရလဒ်၏ "အကျဉ်းချုပ်" ဖြစ်သည်။
PDostatement :: Rowcount () ကို ရွေးချယ်ရန် စုံစမ်းမှုများအတွက်ယုံကြည်စိတ်ချရသောမဟုတ်သော်လည်းစုံစမ်းမှု၏အတန်းအရေအတွက်ကိုရရန်အခြားနည်းလမ်းများရှိသေးသည်။ အသုံးအများဆုံးနည်းလမ်းမှာ query query ရလဒ်များကိုတိုက်ရိုက်ရရန်နှင့်ပြန်လည်ထူထောင်ရေးမှတ်တမ်းများကိုရေတွက်ရန် Fetchall () သို့မဟုတ် fetch () ကို အသုံးပြုရန်ဖြစ်သည်။ ဥပမာအားဖြင့်:
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "root", "password");
// ကရိယာတန်းဆာ SELECT မေးမြန်း
$stmt = $pdo->query("SELECT * FROM users WHERE active = 1");
// အသုံးပြု fetchAll ရလဒ်အားလုံးကိုရယူပါ
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 获取မေးမြန်း返回的行数
echo "Total rows: " . count($rows);
?>
အထက်ပါကုဒ်များတွင်ရလဒ်အားလုံးကို Fetchall () နှင့် ရေတွက် () function ကိုမှတဆင့်ပြန်လာသောအတန်းအရေအတွက်ကို အသုံးပြု. ရရှိသည်။ ဤနည်းလမ်းသည်အထူးသဖြင့် pdostatement :: Rowcount () 0 0 ၏တန်ဖိုးကိုပြန်ပို့ခြင်း၏ပြ problem နာကိုကြုံတွေ့ရမည့်အချိန်ကိုပိုမိုယုံကြည်စိတ်ချရသော။
အကယ်. သင်သည် PDostatement :: Rowcount () ကိုအားကိုးပါကရှာဖွေမှု၏အတန်းအရေအတွက်ကိုရရှိရန်နှင့်ပြန်လည်ရောက်ရှိလာကြောင်းရှာဖွေတွေ့ရှိပါက select query query ကိုလုပ်ဆောင်သည့်အခါဤပြ problem နာကိုကျော်လွှားရန်အောက်ပါနည်းလမ်းများကိုသင်စဉ်းစားနိုင်သည် -
Query ကိုအောင်မြင်စွာကွပ်မျက်ခံရသည်မှာသေချာသည်။ RoRCount () ကိုမခေါ်မီ, PDostatement :: errorinfo () () ကို စစ်ဆေးခြင်းဖြင့်သတင်းအချက်အလက်များကိုပိုမို debugging လုပ်နိုင်သည်။
Fetchall () ကို သုံးပါ။ အထက်တွင်ဖော်ပြခဲ့သည့်အတိုင်း Fetchall () သည် စုံစမ်းမှုရလဒ်များကိုပြန်ပို့ပြီးအရေအတွက်ကိုရေတွက်ခြင်း () အရေအတွက်ကိုပိုမိုတိကျစွာရေတွက်နိုင်သည်။
Database Query ကို Optimize လုပ် ပါ ။ ဥပမာအားဖြင့် SQL ကြေငြာချက်ကို အသုံးပြု . အသုံးပြုသောအသုံးပြုသူများမှအသုံးပြုသူများကိုအသုံးပြုပါ။ 1 ။
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "root", "password");
// ကရိယာတန်းဆာမေးမြန်း来获取符合条件的行数
$stmt = $pdo->query("SELECT COUNT(*) FROM users WHERE active = 1");
// အတန်းအရေအတွက်ကိုရယူပါ
$rowCount = $stmt->fetchColumn();
echo "Total active users: " . $rowCount;
?>
အထက်ပါကုဒ်များတွင် ရေတွက် (*) ကိုရွေးပါ (*) အခြေအနေများနှင့်ကိုက်ညီသောအတန်းအရေအတွက်ကိုတိုက်ရိုက်ပြန်ပို့ပါ။