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

PDostatement အတွက်အကောင်းဆုံးအလေ့အကျင့်များ :: Rowcount နှင့်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များ

gitbox 2025-05-29

PHP ၏ PDO ၏ PDO (PHP Data Obserts) Extension ကိုအသုံးပြုသောအခါ PDStatement :: Rowcount ()) သည်အကျိုးသက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုဆုံးဖြတ်ရန်အသုံးပြုသည်။ အထူးသဖြင့်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များ (ကြိုတင်သတ်မှတ်ထားသည့်ထုတ်ပြန်ချက်များ) နှင့်အသုံးပြုသောအခါ RORCOUTE () ကို မှန်ကန်စွာအသုံးပြုခြင်းသည်တိကျခိုင်မာသည့် application logic ကိုသေချာစေရန်အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။ ဤဆောင်းပါးသည်ဤအခြေအနေတွင် Rowcount () ကို အသုံးပြု. အကောင်းဆုံးအလေ့အကျင့်များကိုမိတ်ဆက်ပေးပြီးများသောအားဖြင့်နားလည်မှုလွဲမှားခြင်းအချို့ကိုဖော်ပြထားသည်။

1 ။ Rowcount () ဘာလုပ်သလဲ။

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

  • ထုတ်ပြန်ချက်များကို ထည့်သွင်းခြင်း , update နှင့် ဖျက်ရန်အတွက် - Rowcount () သည် သက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်ပို့သည်။

  • Select Selected ထုတ်ပြန်ချက်များအတွက် - ဒေတာဘေ့စ်ယာဉ်မောင်းများအားလုံးသည်ပြန်လာသောအတန်းကိုရေတွက်ခြင်းမပြုပါ။ ပြန်လာတန်ဖိုးများ (ဥပမာ MySQL) ကဲ့သို့ယာဉ်မောင်းအချို့အောက်တွင်စိတ်မချရပါ။

2 ။ RORCOUTE ကိုအသုံးပြုခြင်းနှင့်ပတ်သက်။ ဘုံနားလည်မှုလွဲမှားခြင်း ()

1 ။ Select Statement အတွက်အလွဲသုံးစားမှု

developer အတော်များများသည်ရလဒ်အရေအတွက်ကိုရရှိရန် ရွေးချယ်မှု ရှာဖွေမှုတစ်ခုအပြီးတွင် Rowcount () ကို အသုံးပြုရန်ကြိုးစားသည်။

 $stmt = $pdo->prepare("SELECT * FROM users WHERE status = ?");
$stmt->execute(['active']);
$count = $stmt->rowCount(); // မျှော်လင့်ထားသည့်တန်ဖိုးကိုပြန်ပို့မည်မဟုတ်ပါ

ဒါကိုမထောက်ခံဘူး Select Seleties များအတွက်ပိုမိုလုံခြုံ။ ပိုမိုယုံကြည်စိတ်ချရသောနည်းလမ်းမှာ -

 $rows = $stmt->fetchAll();
$count = count($rows);

ဤအချက်သည်သင်အမှန်တကယ်ပြန်လာသောအချက်အလက်ပမာဏကိုအမှန်တကယ်ရရှိရန်သေချာစေသည်။

2 ။ အချို့ဒေတာဘေ့စ်များတွင် Rowcount () ခြားနားချက်ကိုလျစ်လျူရှုပါ

Rowcount () အပြုအမူသည်ဒေတာဘေ့စ်မောင်းနှင်မှီခိုမှီခိုနေရသည်။ ဥပမာ Postgresql တွင် RORCOUT () တွင် Select အတွက်မှန်ကန်သော်လည်း MySQL တွင်မဟုတ်ပါ။ ဖွံ့ဖြိုးရေးစဉ်အတွင်းပစ်မှတ်ဒေတာဘေ့စ်ပေါ်တွင် အခြေခံ. သဟဇာတပြုခြင်းအပြောင်းအလဲအတွက်လိုအပ်သည်။

3 ။ ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များနှင့်ပူးပေါင်းဆောင်ရွက်မှုအတွက်အရေးအသားနည်းလမ်းကိုအကြံပြုသည်

ဥပမာ 1 - အဆင့်အတန်းကို update ပြီးနောက်ထိခိုက်မှုရှိမရှိစစ်ဆေးပါ

 $pdo = new PDO("mysql:host=localhost;dbname=example", "user", "password");

$stmt = $pdo->prepare("UPDATE products SET price = ? WHERE id = ?");
$stmt->execute([99.99, 42]);

if ($stmt->rowCount() > 0) {
    echo "အောင်မြင်စွာအသစ်ပြောင်းခြင်း,ထိခိုက်အတန်းအရေအတွက်:" . $stmt->rowCount();
} else {
    echo "အဘယ်သူမျှမဒေတာကို updated ခဲ့သည်。";
}

ဥပမာ 2 - ပယ်ဖျက်ခြင်းသည်ဖျက်ခြင်းသည်အောင်မြင်မှုရှိမရှိအတည်ပြုသည်

 $stmt = $pdo->prepare("DELETE FROM sessions WHERE last_active < NOW() - INTERVAL 30 DAY");
$stmt->execute();

if ($stmt->rowCount() > 0) {
    echo "တက်သန့်ရှင်း " . $stmt->rowCount() . " သက်တမ်းကုန်ဆုံး session ကို。";
} else {
    echo "သန့်ရှင်းရေးမပြုရန်အစည်းအဝေးများမရှိပါ。";
}

4 ။ အကြံပြုချက်များကို debugging: over-run rowcount အပေါ်အားကိုးမထားပါနှင့် ()

တခါတရံသင်၏ SQL Execution အောင်မြင်သော်လည်း Rowcount () 0 င် 0 င် () သည် 0 င်သည်။ ဥပမာအားဖြင့်, အသစ်ပြောင်းခြင်း ကြေငြာချက်သည်ကော်လံတစ်ခု၏တန်ဖိုးကိုတူညီသောတန်ဖိုးကိုသတ်မှတ်ရန်ကြိုးစားသည်။

SQL Logs များကိုဖွင့်ခြင်းသို့မဟုတ်အလားတူနည်းလမ်းကို အသုံးပြု. debugging လုပ်ရန်သင်ကူညီနိုင်သည်။

 $stmt = $pdo->prepare("UPDATE users SET name = :name WHERE id = :id");
$stmt->execute(['name' => 'Alice', 'id' => 10]);
echo "SQL အောင်မြင်စွာကွပ်မျက်,ထိခိုက်အတန်းအရေအတွက်:" . $stmt->rowCount();

5 ။ ဘေးကင်းလုံခြုံမှုနှင့်တည်ငြိမ်မှုထည့်သွင်းစဉ်းစား

RORGOUT () နှင့်ဆက်စပ်သောမဟုတ်သော်လည်းဆက်စပ်မှုမရှိပါက၎င်းကိုအမြဲအကြံပြုပါသည်။

  • SQL Injection ကိုကာကွယ်ရန်အတွက်ချည်နှောင်ထားသော parameters တွေကို ( ? သို့မဟုတ်အမည်ရှိ)) ကိုသုံးပါ။

  • Poadception အမှားများကိုဖမ်းယူပါ။

  • သင့်လျော်သော PDO အမှားအယွင်းကိုချိန်ညှိခြင်း -

 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

6 ။ လက်တွေ့ကျသော applications များအတွက်ရည်ညွှန်း links များ

စီမံကိန်းအတွင်းရှိဒေတာလုပ်ငန်းများကိုပိုမိုကောင်းမွန်စွာစီမံနိုင်ရန်အတွက်စည်းလုံးညီညွတ်သောဒေတာ abstraction အလွှာကိုလက်ခံရန်နှင့်လိုအပ်ပါကသစ်ထုတ်လုပ်ရေးယန္တရားကိုထည့်သွင်းရန်အကြံပြုသည်။ ဥပမာအားဖြင့်:

 // မင်းမှာသစ်ထုတ်လုပ်ရေးစနစ်ရှိတယ်ဆိုပါစို့ URL
$logUrl = "https://gitbox.net/logs/db-activity";

ဘေးဒဏ်သင့်သည့်အတန်းများနှင့် SQL ကြေငြာချက်အရေအတွက်ကိုအရေးပါသောလုပ်ငန်းများလုပ်ဆောင်ခြင်းနှင့် interface လုံခြုံရေးကိုထိန်းချုပ်ရန်အတွက် interface သို့ interface သို့ပေးပို့နိုင်သည်။