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

PDostatement ::: Rowscount အချို့ဒေတာဘေ့စ်ယာဉ်မောင်းများတွင်မပံ့ပိုးပါ

gitbox 2025-05-28

PHP ၏ PDO ၏ PDO (PHP Data Obserts) extension ကို အသုံးပြု. ဒေတာဘေ့စ်များကိုအသုံးပြုရန်အတွက် developer များက PDostatement :: Rowcount ()) ကို ရရန်မကြာခဏဆိုထားသည်။ သို့သော်လူအများစုကဤနည်းလမ်းသည်ဒေတာဘေ့စ်ယာဉ်မောင်းများ၌မှန်ကန်သောရလဒ်ကိုပြန်လည်မရရှိနိုင်ကြောင်းအမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်တွေ့ရလိမ့်မည်။ ဒါဘာကြောင့်လဲ ဤဆောင်းပါးသည်ဤပြ issue နာကိုနက်နက်နဲနဲခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။

1 ။ function ကိုနှင့် Rowcount ၏အသုံးပြုမှုနှင့်အသုံးပြုမှု

PDostatement :: Rowcount () သည် PDE မှနောက်ဆုံးကွပ်မျက်ခံရသော SQL ထုတ်ပြန်ကြေငြာချက်ကြောင့်သက်ရောက်မှုအရေအတွက်ကိုပြန်ပို့ရန် PDO မှပေးသောနည်းလမ်းဖြစ်သည်။ ၎င်းကို SQL လည်ပတ်မှုအမျိုးအစားနှစ်မျိုးဖြင့်အသုံးပြုလေ့ရှိသည်။

  • Update , Delete , ထည့်သွင်းခြင်း စသည်တို့ကိုဒေတာစစ်ဆင်ရေးကိုပြုပြင်လိမ့်မည်

  • စုံစမ်းမှုကို ရွေးချယ်ပါ (အချို့သောယာဉ်မောင်းများအထောက်အပံ့)

အခြေခံအသုံးပြုမှုဥပမာများ -

 $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password');
$stmt = $pdo->prepare("DELETE FROM users WHERE status = :status");
$stmt->execute([':status' => 'inactive']);
echo $stmt->rowCount(); // ထိခိုက်သောအတန်းအရေအတွက် output

2 ။ Rowcount Reget 0 ကိုရွေးချယ်ပါ။

တရားဝင်စာရွက်စာတမ်းများအရ Rowcount () သည် အချို့သောဒေတာဘေ့စ်ယာဉ်မောင်းများတွင်မေးမြန်းချက်များကို ရွေးချယ်ရန် အကျိုးရှိသည့်အတန်းအရေအတွက်ကိုပြန်ပို့ရန်မထောက်ခံပါ။ ပုံမှန်စံနမူနာသည် MySQL ဖြစ်သည်။ MySQL ၏ PO Driver ကိုအသုံးပြုသောအခါ Selection Query ကိုကွပ်မျက်ခံရပြီးနောက်ကွပ်မျက်ခံရပြီးနောက် Rowcount () သည်များသောအားဖြင့်မျှော်မှန်းထားသည့်ရလဒ်အရေအတွက်ထက် 0 ငအရာ 0 0 ကိုပြန်လည်ရောက်ရှိလိမ့်မည်။

အကြောင်းပြချက်မှာ - Select Selecties အတွက် MySQL ၏ 0 န်ဆောင်မှုခံယူသူစာကြည့်တိုက်သည် MySQLND driver (ပုံမှန်အားဖြင့်ပုံမှန်အားဖြင့်ဖွင့်ထားသည့် enabled enabled enabled enable လုပ်ထားတဲ့အတန်းအရေအတွက်ကိုမအကြောင်းမပါဘူး။ ဒါတောင်မှသင် RORCOUT () အပေါ်လုံးဝမှီခိုလို့မရပါဘူး။

အကယ်. သင်အမှန်တကယ် Select စုံစမ်းမှုရလဒ်များအရေအတွက်ကိုအမှန်တကယ်ရယူရန်လိုအပ်ပါကပိုမိုလုံခြုံသောနည်းလမ်းမှာ Fetchall () ကို အသုံးပြုရန် အတွက်အသုံးပြုရန်ဖြစ်သည်။

 $stmt = $pdo->query("SELECT * FROM users WHERE status = 'active'");
$results = $stmt->fetchAll();
echo count($results);

၎င်းသည်မှတ်ဥာဏ်ပိုများနေသော်လည်းတိကျမှန်ကန်မှုကိုသေချာစေသည်။

3 ။ ကွဲပြားခြားနားသော database driver အပြုအမူ

အောက်ဖော်ပြပါများသည်ဘုံဒေတာဘေ့စ်များစွာတွင် Rowcount ၏ပံ့ပိုးမှုအခြေအနေများဖြစ်သည်။

ဒေတာဘေ့စ် Supported Supported? rowcount ကိုသုံးပါ။
MySQL ? များသောအားဖြင့်မထောက်ပံ့ပါ (MySQLND မဟုတ်လျှင်)
Postgresqlqlql ? ထောက်
SQLite ? Selection Query ကိုများသောအားဖြင့်ထောက်ပံ့သည်မဟုတ်
MSSQL / SQLSRV ? ထောက်
ဗျာ ? ထောက်

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

4 ။ အကြံပြုထားသည့်အလေ့အကျင့်များနှင့်ကြိုတင်ကာကွယ်မှုများ

  1. selection query တွင်ရလဒ်များရှိမရှိဆုံးဖြတ်ရန် Rowcount () ကိုပြောင်းခြင်းကိုရှောင်ကြဉ်ပါ။ အချက်အလက်များပြန်ပို့ခြင်းရှိမရှိအပေါ် အခြေခံ. ရလဒ်ရှိမရှိဆုံးဖြတ်ရန် Fetch () သို့မဟုတ် fetchall () ကို အသုံးပြုခြင်းသည်အကောင်းဆုံးဖြစ်သည်။

  2. Delete / Update / Insert တွင် RORCOUT () သည်များသောအားဖြင့်ယုံကြည်စိတ်ချရသောဖြစ်သည်။ စုံစမ်းမှုသည်အောင်မြင်သောကာလပတ်လုံး၎င်းသည်များသောအားဖြင့်အကျိုးသက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်ပို့နိုင်သည်။

  3. MySQLND (MySQL ဇာတိ driver driver) ကိုဖွင့်သောအခါ Select Trowcount () ကိုရရန် Rowcount () ကိုအသုံးပြုရန်သေချာအောင်လုပ်ပါ။

Phpinfo () ကို သုံးနိုင်သည် (သို့) MySQLND ကိုအသုံးပြုမနေကြည့်ရှုရန်အောက်ပါကုဒ်ကို run နိုင်သည်။

 echo phpinfo();

သို့မဟုတ်:

 echo (extension_loaded('mysqlnd')) ? 'mysqlnd loaded' : 'mysqlnd not loaded';

5 ။ အကျဉ်းချုပ်

PDostatement :: Rowcount () , အဆင်ပြေသောနည်းလမ်းဖြစ်သော်လည်း၎င်း၏အပြုအမူသည်အခြေခံဒေတာဘေ့စ်ယာဉ်မောင်း၏ထောက်ခံမှုဘွဲ့ပေါ်တွင်မူတည်သည်။ Code ကို Cross-Database သဟဇာတဖြစ်စေရန် code ကိုလိုက်လျောညီထွေဖြစ်အောင်ပြုလုပ်နိုင်ရန်အတွက် Select မေးမြန်းချက်များကိုအသုံးပြုသောအခါ Rowcount () ကို ရှောင်ရှားရန်အကြံပြုသည်။

နောက်ထပ်ဒေတာဘေ့စနှင့်သက်ဆိုင်သောသင်ခန်းစာများအတွက် ကျေးဇူးပြု. https://gitbox.net/dev/Database-Tutorials