PHP ၏ PDO ၏ PDO (PHP Data Obserts) Extension ကိုအသုံးပြုသောအခါ PDStatement :: Rowcount ()) သည်အကျိုးသက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုဆုံးဖြတ်ရန်အသုံးပြုသည်။ အထူးသဖြင့်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များ (ကြိုတင်သတ်မှတ်ထားသည့်ထုတ်ပြန်ချက်များ) နှင့်အသုံးပြုသောအခါ RORCOUTE () ကို မှန်ကန်စွာအသုံးပြုခြင်းသည်တိကျခိုင်မာသည့် application logic ကိုသေချာစေရန်အရေးကြီးသောအစိတ်အပိုင်းဖြစ်သည်။ ဤဆောင်းပါးသည်ဤအခြေအနေတွင် Rowcount () ကို အသုံးပြု. အကောင်းဆုံးအလေ့အကျင့်များကိုမိတ်ဆက်ပေးပြီးများသောအားဖြင့်နားလည်မှုလွဲမှားခြင်းအချို့ကိုဖော်ပြထားသည်။
SQL ထုတ်ပြန်ကြေငြာချက်၏နောက်ဆုံးကွပ်မျက်မှုကြောင့်ထိခိုက်သောအတန်းအရေအတွက်ကိုပြန်လည်ပေးပို့ရန် Rowcount () နည်းလမ်းကိုအသုံးပြုသည်။ အဆိုပါအပြုအမူသည်ကွဲပြားခြားနားသော SQL စစ်ဆင်ရေးအမျိုးအစားများကိုဖြတ်ပြီးအနည်းငယ်ကွဲပြားသည်။
ထုတ်ပြန်ချက်များကို ထည့်သွင်းခြင်း , update နှင့် ဖျက်ရန်အတွက် - Rowcount () သည် သက်ရောက်မှုရှိသောအတန်းအရေအတွက်ကိုပြန်ပို့သည်။
Select Selected ထုတ်ပြန်ချက်များအတွက် - ဒေတာဘေ့စ်ယာဉ်မောင်းများအားလုံးသည်ပြန်လာသောအတန်းကိုရေတွက်ခြင်းမပြုပါ။ ပြန်လာတန်ဖိုးများ (ဥပမာ MySQL) ကဲ့သို့ယာဉ်မောင်းအချို့အောက်တွင်စိတ်မချရပါ။
developer အတော်များများသည်ရလဒ်အရေအတွက်ကိုရရှိရန် ရွေးချယ်မှု ရှာဖွေမှုတစ်ခုအပြီးတွင် Rowcount () ကို အသုံးပြုရန်ကြိုးစားသည်။
$stmt = $pdo->prepare("SELECT * FROM users WHERE status = ?");
$stmt->execute(['active']);
$count = $stmt->rowCount(); // မျှော်လင့်ထားသည့်တန်ဖိုးကိုပြန်ပို့မည်မဟုတ်ပါ
ဒါကိုမထောက်ခံဘူး Select Seleties များအတွက်ပိုမိုလုံခြုံ။ ပိုမိုယုံကြည်စိတ်ချရသောနည်းလမ်းမှာ -
$rows = $stmt->fetchAll();
$count = count($rows);
ဤအချက်သည်သင်အမှန်တကယ်ပြန်လာသောအချက်အလက်ပမာဏကိုအမှန်တကယ်ရရှိရန်သေချာစေသည်။
Rowcount () အပြုအမူသည်ဒေတာဘေ့စ်မောင်းနှင်မှီခိုမှီခိုနေရသည်။ ဥပမာ Postgresql တွင် RORCOUT () တွင် Select အတွက်မှန်ကန်သော်လည်း MySQL တွင်မဟုတ်ပါ။ ဖွံ့ဖြိုးရေးစဉ်အတွင်းပစ်မှတ်ဒေတာဘေ့စ်ပေါ်တွင် အခြေခံ. သဟဇာတပြုခြင်းအပြောင်းအလဲအတွက်လိုအပ်သည်။
$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 ခဲ့သည်。";
}
$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 "သန့်ရှင်းရေးမပြုရန်အစည်းအဝေးများမရှိပါ。";
}
တခါတရံသင်၏ 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();
RORGOUT () နှင့်ဆက်စပ်သောမဟုတ်သော်လည်းဆက်စပ်မှုမရှိပါက၎င်းကိုအမြဲအကြံပြုပါသည်။
SQL Injection ကိုကာကွယ်ရန်အတွက်ချည်နှောင်ထားသော parameters တွေကို ( ? သို့မဟုတ်အမည်ရှိ)) ကိုသုံးပါ။
Poadception အမှားများကိုဖမ်းယူပါ။
သင့်လျော်သော PDO အမှားအယွင်းကိုချိန်ညှိခြင်း -
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
စီမံကိန်းအတွင်းရှိဒေတာလုပ်ငန်းများကိုပိုမိုကောင်းမွန်စွာစီမံနိုင်ရန်အတွက်စည်းလုံးညီညွတ်သောဒေတာ abstraction အလွှာကိုလက်ခံရန်နှင့်လိုအပ်ပါကသစ်ထုတ်လုပ်ရေးယန္တရားကိုထည့်သွင်းရန်အကြံပြုသည်။ ဥပမာအားဖြင့်:
// မင်းမှာသစ်ထုတ်လုပ်ရေးစနစ်ရှိတယ်ဆိုပါစို့ URL
$logUrl = "https://gitbox.net/logs/db-activity";
ဘေးဒဏ်သင့်သည့်အတန်းများနှင့် SQL ကြေငြာချက်အရေအတွက်ကိုအရေးပါသောလုပ်ငန်းများလုပ်ဆောင်ခြင်းနှင့် interface လုံခြုံရေးကိုထိန်းချုပ်ရန်အတွက် interface သို့ interface သို့ပေးပို့နိုင်သည်။