PHP ၏ဒေတာဘေ့စ် abstrace abstraction layer pdo (PHP Data Obserts), PDSPatement :: Rowcount () သည်နောက်ဆုံး SQL ကွပ်မျက်မှုကြောင့်ထိခိုက်သောအတန်းအရေအတွက်ကိုပြန်လည်ရောက်ရှိစေသောအသုံးများသောနည်းလမ်းဖြစ်သည်။ သို့သော် developer များစွာသည်ကွဲပြားခြားနားသောဒေတာဘေ့စ်ယာဉ်မောင်းများတွင်အသုံးပြုသောအခါနည်းလမ်းအပြုအမူသည်ကိုက်ညီမှုရှိကြောင်းတွေ့ရှိရပြီးအချို့သောအခြေအနေများတွင်မျှော်လင့်ထားသည့်ရလဒ်များကိုပင်မရရှိခဲ့ပါ။
တရားဝင် PHP စာရွက်စာတမ်း များ၏ညွှန်ကြားချက်များအရ -
ဒေတာဘေ့စ်အများစုအတွက် Rowcount () သည်ထုတ်ပြန်ချက်များကို ဖျက်ရန် , ထည့်သွင်းခြင်း , Select Selected ထုတ်ပြန်ချက်များအတွက်အချို့သောဒေတာဘေ့စ်ယာဉ်မောင်းများသည်သက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်လည်ပေးပို့နိုင်သော်လည်း၎င်းသည်စည်းလုံးသော PDO အပြုအမူ၏အစိတ်အပိုင်းမဟုတ်ပါ။
ဆိုလိုသည်မှာ Rowcount ၏အပြုအမူသည်အခြေခံဒေတာဘေ့စ်ယာဉ်မောင်းအကောင်အထည်ဖော်မှုအပေါ်မူတည်သည်။
ဒေတာဘေ့စ်အမျိုးအစား | ရွေးချယ်မှုထုတ်ပြန်ချက်များအတွက် 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 တွင်အမှန်တကယ်အတန်းအရေအတွက်ကိုပြန်ပို့နိုင်သည်။
အဓိကအကြောင်းရင်းမှာဒေတာဘေ့ စ ်ကားမောင်းသူသည် SQL ကိုကွဲပြားသောနည်းလမ်းများဖြင့်ခွဲခြားထားခြင်းဖြစ်သည်။ အချို့သောယာဉ်မောင်းများသည်ရလဒ်အားလုံးကိုကြိုတင်မဖွင့်ပါ။ ဤကိစ္စတွင်ကြိုတင်မှာကြားထားသည့်အတန်းမည်မျှရှိသည်ကိုမသိနိုင်ပါ။
တရားဝင် MySQL driver ( MySQLND ) သည် Select Troublnof (MySQLND) ရှင်းရှင်းလင်းလင်းဖော်ပြထားသည်။
$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 () သည် မှတ်ဥာဏ်များစွာကိုသိမ်းပိုက်လိမ့်မည်။
$stmt = $pdo->prepare("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 7 DAY");
$stmt->execute();
echo "အသစ်ပြောင်းထားသော " . $stmt->rowCount() . " အိုကေ";
ထိုကဲ့သို့သောစစ်ဆင်ရေးများအတွက် Rowcount () များသောအားဖြင့်ယုံကြည်စိတ်ချရသောဖြစ်ပါတယ်။
သင်၏ကိုယ်ပိုင် Rowcount function ကို oncapsult, SQL အမျိုးအစားကိုစစ်ထုတ်ပြီးသင့်လျော်သောစာရင်းအင်းနည်းလမ်းကိုရွေးချယ်နိုင်သည်။
function safeRowCount(PDOStatement $stmt, $sqlType = 'SELECT') {
if (strtoupper($sqlType) === 'SELECT') {
return count($stmt->fetchAll());
} else {
return $stmt->rowCount();
}
}
၎င်းသည်သင်၏အပြုအမူကိုကွဲပြားခြားနားသောဒေတာဘေ့စ်ယာဉ်မောင်းများတွင်တသမတ်တည်းထားရန်ခွင့်ပြုသည်။
PDostatement ၏ရှေ့နောက်မညီသည့်အပြုအမူ --: Rowcount () သည် PHP Database Development တွင်ဘုံဒဏ် fulfulies တစ်ခုဖြစ်သည်။ ၎င်း၏အခြေခံယန္တရားကိုနားလည်ပြီး SQL အမျိုးအစားများအပေါ် အခြေခံ. သင့်တော်သောအပြောင်းအလဲနည်းလမ်းကိုရွေးချယ်ခြင်းသည်အလွန်အမင်းလိုက်ဖက်သောကုဒ်ရေးသားခြင်း၏သော့ချက်ဖြစ်သည်။
ပိုနမူနာကုဒ်သို့မဟုတ်မျှဝေခြင်းအတွေ့အကြုံအတွက် ကျေးဇူးပြု. ကျွန်ုပ်တို့၏နည်းပညာအသိုင်းအဝိုင်း - https://gitbox.net/forum ။