လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> PDostatement တွင်အမူအကျင့်ဆိုင်ရာကွဲပြားခြားနားမှုများကိုမည်သို့ကိုင်တွယ်ရမည်နည်း :: ကွဲပြားခြားနားသောဒေတာဘေ့စ်ယာဉ်မောင်းများအောက်တွင် Rowcount

PDostatement တွင်အမူအကျင့်ဆိုင်ရာကွဲပြားခြားနားမှုများကိုမည်သို့ကိုင်တွယ်ရမည်နည်း :: ကွဲပြားခြားနားသောဒေတာဘေ့စ်ယာဉ်မောင်းများအောက်တွင် Rowcount

gitbox 2025-05-28

PHP ၏ဒေတာဘေ့စ် abstrace abstraction layer pdo (PHP Data Obserts), PDSPatement :: Rowcount () သည်နောက်ဆုံး SQL ကွပ်မျက်မှုကြောင့်ထိခိုက်သောအတန်းအရေအတွက်ကိုပြန်လည်ရောက်ရှိစေသောအသုံးများသောနည်းလမ်းဖြစ်သည်။ သို့သော် developer များစွာသည်ကွဲပြားခြားနားသောဒေတာဘေ့စ်ယာဉ်မောင်းများတွင်အသုံးပြုသောအခါနည်းလမ်းအပြုအမူသည်ကိုက်ညီမှုရှိကြောင်းတွေ့ရှိရပြီးအချို့သောအခြေအနေများတွင်မျှော်လင့်ထားသည့်ရလဒ်များကိုပင်မရရှိခဲ့ပါ။

1 ။ Rowcount ၏တရားဝင်ဖော်ပြချက်

တရားဝင် PHP စာရွက်စာတမ်း များ၏ညွှန်ကြားချက်များအရ -

ဒေတာဘေ့စ်အများစုအတွက် Rowcount () သည်ထုတ်ပြန်ချက်များကို ဖျက်ရန် , ထည့်သွင်းခြင်း , Select Selected ထုတ်ပြန်ချက်များအတွက်အချို့သောဒေတာဘေ့စ်ယာဉ်မောင်းများသည်သက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်လည်ပေးပို့နိုင်သော်လည်း၎င်းသည်စည်းလုံးသော PDO အပြုအမူ၏အစိတ်အပိုင်းမဟုတ်ပါ။

ဆိုလိုသည်မှာ Rowcount ၏အပြုအမူသည်အခြေခံဒေတာဘေ့စ်ယာဉ်မောင်းအကောင်အထည်ဖော်မှုအပေါ်မူတည်သည်။

2 ။ အဓိက Mainstream ဒေတာဘေ့စ်၏ကွဲပြားခြားနားသောအပြုအမူ

ဒေတာဘေ့စ်အမျိုးအစား ရွေးချယ်မှုထုတ်ပြန်ချက်များအတွက် Support Rowcount Update / Delete / Insert အတွက် rowcount ကိုပံ့ပိုးမှု
MySQL ? စိတ်မချရသော (များသောအားဖြင့် 0 ပြန်လာ 0) ? ထိခိုက်သောအတန်းအရေအတွက်ကိုပြန်သွားပါ
Postgresqlqlql ? ထောက် ? ထောက်
SQLite ? ထောက် ? ထောက်
MSSQL ? (မှီခိုသူယာဉ်မောင်းအကောင်အထည်ဖော်မှု) ?

ဥပမာ MySQL တွင်:

 $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->query("SELECT * FROM users");
echo $stmt->rowCount(); // များသောအားဖြင့်ပြန်လာ 0

သို့သော် PostGresql သို့မဟုတ် SQLite တွင်အမှန်တကယ်အတန်းအရေအတွက်ကိုပြန်ပို့နိုင်သည်။

3 ။ အဘယ်ကြောင့်ဤခြားနားချက်ကဘာလဲ?

အဓိကအကြောင်းရင်းမှာဒေတာဘေ့ ်ကားမောင်းသူသည် SQL ကိုကွဲပြားသောနည်းလမ်းများဖြင့်ခွဲခြားထားခြင်းဖြစ်သည်။ အချို့သောယာဉ်မောင်းများသည်ရလဒ်အားလုံးကိုကြိုတင်မဖွင့်ပါ။ ဤကိစ္စတွင်ကြိုတင်မှာကြားထားသည့်အတန်းမည်မျှရှိသည်ကိုမသိနိုင်ပါ။

တရားဝင် MySQL driver ( MySQLND ) သည် Select Troublnof (MySQLND) ရှင်းရှင်းလင်းလင်းဖော်ပြထားသည်။

4 ။ ဘယ်လိုကိုင်တွယ်သင့်သလဲ

1 ။ Selection query: fetchall () သို့မဟုတ်ကွင်းဆက်ရေတွက်ခြင်းကိုသုံးပါ

 $stmt = $pdo->query("SELECT * FROM users");
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$count = count($rows);
echo "အများအပြားရှိတတ်သော {$count} လိုင်းဒေတာ";

သို့မဟုတ်:

 $count = 0;
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch()) {
    $count++;
}
echo "အများအပြားရှိတတ်သော {$count} လိုင်းဒေတာ";

မှတ်စု: ဒေတာ volume သည်ကြီးမားလျှင်, fetchall () သည် မှတ်ဥာဏ်များစွာကိုသိမ်းပိုက်လိမ့်မည်။

2 ။ Update / Delete / Insert အတွက်, Rowcount ကိုလုံခြုံစွာအသုံးပြုနိုင်သည်

 $stmt = $pdo->prepare("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 7 DAY");
$stmt->execute();
echo "အသစ်ပြောင်းထားသော " . $stmt->rowCount() . " အိုကေ";

ထိုကဲ့သို့သောစစ်ဆင်ရေးများအတွက် Rowcount () များသောအားဖြင့်ယုံကြည်စိတ်ချရသောဖြစ်ပါတယ်။

3 ။ Cross-Database လိုက်ဖက်တဲ့ croscount နည်းလမ်းကို encapsult

သင်၏ကိုယ်ပိုင် Rowcount function ကို oncapsult, SQL အမျိုးအစားကိုစစ်ထုတ်ပြီးသင့်လျော်သောစာရင်းအင်းနည်းလမ်းကိုရွေးချယ်နိုင်သည်။

 function safeRowCount(PDOStatement $stmt, $sqlType = 'SELECT') {
    if (strtoupper($sqlType) === 'SELECT') {
        return count($stmt->fetchAll());
    } else {
        return $stmt->rowCount();
    }
}

၎င်းသည်သင်၏အပြုအမူကိုကွဲပြားခြားနားသောဒေတာဘေ့စ်ယာဉ်မောင်းများတွင်တသမတ်တည်းထားရန်ခွင့်ပြုသည်။

V. နိဂုံးချုပ်

PDostatement ၏ရှေ့နောက်မညီသည့်အပြုအမူ --: Rowcount () သည် PHP Database Development တွင်ဘုံဒဏ် fulfulies တစ်ခုဖြစ်သည်။ ၎င်း၏အခြေခံယန္တရားကိုနားလည်ပြီး SQL အမျိုးအစားများအပေါ် အခြေခံ. သင့်တော်သောအပြောင်းအလဲနည်းလမ်းကိုရွေးချယ်ခြင်းသည်အလွန်အမင်းလိုက်ဖက်သောကုဒ်ရေးသားခြင်း၏သော့ချက်ဖြစ်သည်။

ပိုနမူနာကုဒ်သို့မဟုတ်မျှဝေခြင်းအတွေ့အကြုံအတွက် ကျေးဇူးပြု. ကျွန်ုပ်တို့၏နည်းပညာအသိုင်းအဝိုင်း - https://gitbox.net/forum