PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PDO ကိုအသုံးပြုခြင်းသည်အကြံပြုထားသောနည်းလမ်းများတစ်ခုဖြစ်သည်။ PDostatement :: Rowcount () သည်ယခင် SQL ကြေငြာချက်ကြောင့်သက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်ပို့ရန် PDO မှပေးသောနည်းလမ်းဖြစ်သည်။ သို့သော်၎င်း၏အပြုအမူသည်ကွဲပြားခြားနားသော SQL ကြေငြာ ချက် အမျိုးအစားများအ ကြား ကွဲပြားခြားနားသော SQL ကြေ ငြာ ချက်အမျိုးအစားများအနည်းငယ်ကွာခြားသည် ။
ဤဆောင်းပါးသည် PDostatement ၏အခြေခံအသုံးပြုမှုကိုမိတ်ဆက်ပေးလိမ့်မည်။ rowcount () ကို မိတ်ဆက်ပေးပြီး ပြည်ထောင်စု စုံစမ်းမှုရလဒ်များအရအဆင့်မြှင့်မှုရလဒ်များကိုမှန်ကန်စွာရေတွက်သည့်အခါအတိမ်အနက်ကိုစူးစမ်းလေ့လာပါမည်။
Delete Delete ကို ဖျက်ခြင်း, ထည့်သွင်းခြင်း သို့မဟုတ် update လုပ်သည့် အခါ rowcount () သည် အကျိုးသက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်ပို့နိုင်သည်။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -
<?php
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'user', 'pass');
$stmt = $pdo->prepare("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY");
$stmt->execute();
echo "အသစ်ပြောင်းထားသော " . $stmt->rowCount() . " လိုင်းမှတ်တမ်းများ。";
?>
အထက်ပါကုဒ်တွင် RORCOUT () သည် update လုပ်ထားသောအတန်းအရေအတွက်ကိုပြန်ပို့သည်။
သို့သော် Select query တစ်ခုကိုကွပ်မျက်သည့်အခါ RORCOUT () သည် မျှော်လင့်ထားသည့်အတိုင်းအမြဲတမ်းအလုပ်လုပ်သည်မဟုတ်။ ဒေတာဘေ့စ်အများစု (အထူးသဖြင့် MySQL) အတွက် Default PDO :: MySQL_ATTR_UATE_UCUSE_UCUSED_Query usy_Query_Query setting, Rowcount () သည် ရလဒ်အတန်းအရေအတွက်ကိုမပြန်ပါ။
အကယ်. သင်သည် Select search query ကိုအသုံးပြုနေပါကရလဒ်အနေဖြင့်အတန်းအရေအတွက်ကိုရလိုပါကအကြံပြုထားသောနည်းလမ်းမှာရလဒ်အားလုံးကိုရယူရန်နှင့် count () မှတဆင့်တွက်ချက်ရန်ဖြစ်သည်။
<?php
$stmt = $pdo->query("SELECT * FROM articles WHERE category = 'php'");
$results = $stmt->fetchAll();
echo "စုစုပေါင်းရှိပါတယ် " . count($results) . " စံချိန်。";
?>
ရွေးကောက်ပွဲနှစ်ခုသို့မဟုတ်နှစ်ခုထက်ပိုသော ရွေးချယ်မှု ရလဒ်များကိုပေါင်းစည်းရန်အတွက် ပြည်ထောင်စုသည် SQL တွင် syntax ဖြစ်သည်။ ပုံမှန်အားဖြင့်၎င်းသည်မိတ္တူပွားများကိုဖယ်ရှားသည် (အကယ်. သင်သည်အတန်းများကိုထပ်တူထပ်မျှထားလိုပါက ပြည်ထောင်စုအားလုံး အသုံးပြုသည်) ကိုဖယ်ရှားပေးသည်။ ထို့ကြောင့် ပြည်ထောင်စု စုံစမ်းရေးအတန်း၏အရေအတွက်ကိုဘယ်လိုရနိုင်မလဲ။
အမှားသရုပ်ပြ
<?php
$stmt = $pdo->query("SELECT name FROM authors UNION SELECT name FROM editors");
echo $stmt->rowCount(); // အများဆုံး၌တည်၏ MySQL အမှု၌ပြန်လာလိမ့်မည် 0
?>
MySQL ရှိ Select query အတွက် Rowcount () Rowcount () သည်ပြန်လာသောရလဒ်အတန်းကိုမထောက်ပံ့သောကြောင့်ဖြစ်သည်။
<?php
$stmt = $pdo->query("
SELECT name FROM authors
UNION
SELECT name FROM editors
");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "合并查询后စုစုပေါင်းရှိပါတယ် " . count($rows) . " စံချိန်。";
?>
ဤနည်းလမ်းသည်ရလဒ်အားလုံးကို fetchall () မှတ ဆင့်ရလဒ်များရရှိပြီး, ၎င်းသည် ပြည်ထောင်စု စုံစမ်းမှု၏ရလဒ်များကိုမှန်ကန်စွာရယူနိုင်ရုံသာမကအခြားရှုပ်ထွေးသော ရွေးချယ်ထားသော မေးမြန်းချက်များနှင့်လည်းသင့်တော်သည်။
ပြည်ထောင်စုကို သုံးသောအခါ (Depuploplication မရှိပါ) ကိုသင်အသုံးပြုသောအခါမှတ်တမ်းများအားလုံးရရန်တူညီသောနည်းလမ်းကိုသုံးနိုင်သည်။
<?php
$stmt = $pdo->query("
SELECT name FROM authors
UNION ALL
SELECT name FROM editors
");
$rows = $stmt->fetchAll();
echo "UNION ALL စုံစမ်းမှုရလဒ်အတွက်အတန်းအရေအတွက်ဖြစ်ပါတယ်:" . count($rows);
?>
အကယ် . သင်၏ ပြည်ထောင်စု စုံစမ်းမှုရလဒ်များသည်များစွာသောဖြစ်ကောင်းဖြစ်လျှင် Paged ကို paged ပြုလုပ်ရန်လိုအပ်ပါက,
<?php
$page = 1;
$limit = 10;
$offset = ($page - 1) * $limit;
$sql = "
SELECT * FROM (
SELECT name FROM authors
UNION
SELECT name FROM editors
) AS combined
LIMIT :limit OFFSET :offset
";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll();
foreach ($results as $row) {
echo $row['name'] . "<br>";
}
?>
PDostatement :: Rowcount () သည် များသောအားဖြင့် ရွေးချယ်ထားသော ဖော်ပြချက်များအတွက်မှန်ကန်သောရလဒ်များကိုမပြန်ပါ (အထူးသဖြင့် MySQL တွင်) ။
Fetchall () + အရေအတွက် () () () () () () () () () သည်စုံစမ်းမှုအတန်းအရေအတွက်ကိုရရှိရန်ယေဘုယျနှင့်ယုံကြည်စိတ်ချရသောနည်းတစ်ခုဖြစ်သည်။
သမဂ္ဂ သို့မဟုတ် ပြည်ထောင်စုစုံစမ်းရေးအတွက်မေးမြန်းမှုအားလုံး အနေဖြင့်ရီးရဲလ်အရေအတွက်ရရန် Array အရှည်ကိုရေတွက်ရန် Fetchall () ကို အသုံးပြုရန်အကြံပြုသည်။
အကယ်. သင်သည်ပေါင်းစည်းမှုရှာဖွေခြင်းကို paging လုပ်ရန်လိုအပ်ပါက ပြည်ထောင်စု ရလဒ်ကို subquery အဖြစ်လုပ်ဆောင်နိုင်သည်။
ဤဆောင်းပါးသည်သင့်အား Rowcount ၏အသုံးပြုမှုမြင်ကွင်းကိုနားလည်ရန်ကူညီနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည် ။ အကယ်. သင်သည် API သို့မဟုတ် data analytics ပလက်ဖောင်းတစ်ခုတည်ဆောက်နေပါကဤအကြံပြုချက်များသည် ( GitBox.net ရှိစီမံကိန်းတစ်ခုတွင်) တည်ဆောက်ပါကအထူးအရေးကြီးသည်။
သင့်အတွက် paging wrapper function ကိုရေးရန်ကျွန်ုပ်ကိုလိုအပ်ပါသလား။