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

သုတ်ထားသော data အရေအတွက်ကို PDostatement မှတစ်ဆင့်မည်သို့ရယူရမည်နည်း

gitbox 2025-05-20

လျှောက်လွှာများရေးဆွဲသည့်အခါကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်တွင် Delete မှတ်တမ်းများကိုအသုတ်လုပ်ရန်လိုအပ်လေ့ရှိသည်။ ဖျက်ခြင်းလုပ်ငန်းပြီးဆုံးသွားသောအခါဖျက်ပစ်ထားသောမှတ်တမ်းအရေအတွက်ကိုရရှိရန်လိုအပ်သည်။ PDO (PHP Data Obserts) သည် PHP ရှိအသုံးပြုသောဒေတာဘေ့စ်အသုံးပြုမှုနည်းလမ်းများအနက်မှတစ်ခုဖြစ်သည်။ ၎င်းသည် PDostatement :: Rowcount ()) သည်သက်ရောက်မှုရှိသောအတန်းအရေအတွက်ရရှိရန်နည်းလမ်းဖြစ်သည်။ သို့သော်အသုတ်ဖျက်ခြင်းလုပ်ငန်းများအတွက် PDostatement ကိုအသုံးပြုသည့်အခါ PDostatement :: Rowcount () ကိုဖျက်ရန်မှတ်တမ်းများကိုအသုံးပြုသောအခါအသေးစိတ်အချက်အလက်များရှိသည်။

1 ။ PDostatement ၏အခြေခံအသုံးပြုမှု :: Rowcount ()

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

 <?php
// ငါတို့မှာတစ်ခုရှိပြီးသားဆိုပါစို့ PDO နမူနာ
$pdo = new PDO('mysql:host=localhost;dbname=testdb', 'root', '');

// စံချိန်ကိုဖျက်ပါ
$stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->execute();

// ပယ်ဖျက်ခဲ့သောမှတ်တမ်းအရေအတွက်ကိုရယူပါ
$deletedRows = $stmt->rowCount();
echo "ဖျက်ပါ {$deletedRows} စံချိန်";
?>

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

2 ။ Bulk Bulk Deletion စစ်ဆင်ရေးနှင့် Rowcount () ပြ issues နာများ

Batch Deletion ဖျော်ဖြေတင်ဆက်သည့်အခါ pdostatement မှပြန်လာသောအတန်းအရေအတွက် :: Rowcount () သည် မျှော်လင့်ချက်များနှင့်အတိအကျမကိုက်ညီပါ။ အကြောင်းမှာဤကဲ့သို့သောဒေတာဘေ့စ်အချို့ (ထိုကဲ့သို့သော MySQL ကဲ့သို့သော) သည်မေးမြန်းချက်များကိုဖြည့်ဆည်းသောအခါကွဲပြားခြားနားသောအတန်းများသို့ပြန်ပို့နိုင်သည်။

ဥပမာ MySQL တွင်ပယ်ဖျက်ခြင်း ကိုဖျက်ပစ်ခြင်းသည် တစ်ခါတစ်ရံသုညအတန်းများအပေါ်သက်ရောက်မှုရှိသည်။ သုတ်ဖျက်မှုလုပ်ငန်းများအတွက်ပင်အမှန်တကယ်ဖျက်ထားသောမှတ်တမ်းများကိုသာရေတွက်လိမ့်မည်။ ဤအချိန်တွင် RORCOUT () သည် သုညသို့ပြန်သွားနိုင်သည်, အထူးသဖြင့်စံသတ်မှတ်ချက်များနှင့်ကိုက်ညီသောမှတ်တမ်းများမရှိပါက။

3 ။ ပယ်ဖျက်ထားသောမှတ်တမ်းများကိုမှန်ကန်စွာရရှိရန်မည်သို့သေချာစေနိုင်သနည်း။

ချိုးဖျက်ခြင်းအတွက်ဖျက်ထားသောမှတ်တမ်းများကိုမှန်ကန်သောမှတ်တမ်းများကိုသေချာစေရန်, အောက်ပါနည်းလမ်းများကိုသင်စဉ်းစားနိုင်သည်။

နည်းလမ်း 1 - PDostatement ကိုသုံးပြီးနောက် Query :: Rowcount ()

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

 <?php
// ငါတို့အသက်အရွယ်အားလုံးထက်လျော့နည်းစေချင်သည်ဆိုပါစို့18အသုံးပြုသူများ
$stmt = $pdo->prepare("SELECT COUNT(*) FROM users WHERE age < 18");
$stmt->execute();
$deletedCount = $stmt->fetchColumn();

// ဖျက်ခြင်းဖျော်ဖြေ
$stmt = $pdo->prepare("DELETE FROM users WHERE age < 18");
$stmt->execute();

// ပယ်ဖျက်ခဲ့သောမှတ်တမ်းများကိုအတည်ပြုပါ
echo "ဖျက်ပါ {$deletedCount} စံချိန်";
?>

နည်းလမ်း 2. ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်အရောင်းအဝယ်ကိုသုံးပါ

Batch Deletion လုပ်ငန်းလည်ပတ်မှုတွင်ငွေပေးငွေယူတွင်အချက်အလက်များအားဒေတာများကိုမဖျက်ခင်မှတ်တမ်းအရေအတွက်အတိအကျကိုရရှိရန်သေချာစေသည်။ Delete Operations ကို Delete Operations ကိုဖျော်ဖြေခြင်းအားဖြင့်ငွေပေးချေမှုတစ်ခုအတွက် () အရေအတွက်ကိုရွေးချယ်ခြင်း အားဖြင့်နှစ်ခုအကြားဒေတာရှေ့နောက်ညီညွတ်မှုကိုသေချာစေနိုင်သည်။

 <?php
// ငွေပေးငွေယူတစ်ခုစတင်ပါ
$pdo->beginTransaction();

try {
    // ပယ်ဖျက်ခြင်းစံနှုန်းများနှင့်ကိုက်ညီသောမှတ်တမ်းများကိုရယူပါ
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM users WHERE age < 18");
    $stmt->execute();
    $deletedCount = $stmt->fetchColumn();

    // ဖျက်ခြင်းဖျော်ဖြေ操作
    $stmt = $pdo->prepare("DELETE FROM users WHERE age < 18");
    $stmt->execute();

    // တင်သွင်းမှုတင်သွင်း
    $pdo->commit();

    // ပယ်ဖျက်ခဲ့သောမှတ်တမ်းများ output ကိုအရေအတွက်
    echo "ဖျက်ပါ {$deletedCount} စံချိန်";
} catch (Exception $e) {
    // ခြွင်းချက်ဖြစ်ပေါ်လျှင်,ငွေပေးငွေယူပြန်လှိမ့်
    $pdo->rollBack();
    echo "ဖျက်ခြင်းမအောင်မြင်ပါ: " . $e->getMessage();
}
?>

အရောင်းအ 0 ယ်များကိုအသုံးပြုခြင်းအားဖြင့် deletion လုပ်ငန်းများနှင့်မှတ်တမ်းမှတ်ခြင်းဆိုင်ရာမေးမြန်းချက်များအကြားအချက်အလက်မကိုက်ညီမှုများကိုရှောင်ရှားနိုင်သည်။

နည်းလမ်း 3: PDostatement :: Rowcount () နှင့်ဒေတာဘေ့စ်မှပြန်လာသောအတန်းအရေအတွက်ကိုသုံးပါ

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

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

ဒေတာများကိုအသုတ်တွင်ဖျက်ပစ်သည့်အခါ pdostatement :: Rowcount () ကို ရယူပါ။

  • Rowcount () အားဖြင့် ပြန်လာသောအတန်းအရေအတွက်မှာလုံးဝတိကျမှုမရှိပါ။ အထူးသဖြင့်အချို့သော optimized sql စစ်ဆင်ရေးများအတွက်။

  • Delete Records အရေအတွက်အတိအကျကိုရရှိရန်အတွက်စံသတ်မှတ်ချက်များနှင့်ကိုက်ညီသောမှတ်တမ်းအရေအတွက်ကိုဖျက်ခြင်းမပြုမီရေတွက်ခြင်းဖြင့် ရေတွက် ခြင်းဖြင့်ရယူနိုင်သည်။

  • အရောင်းအ 0 ယ်များကိုအသုံးပြုခြင်းကိုအသုံးပြုခြင်းသည်စစ်ဆင်ရေးကိုဖျက်ခြင်းနှင့်စစ်ဆင်ရေးကိုဖျက်ပစ်ခြင်းနှင့်အလယ်အလတ်အချက်အလက်များတွင်မကိုက်ညီမှုကိုရှောင်ရှားသည်။

ဤနည်းလမ်းများကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အသုတ်ဖျက်ခြင်းလုပ်ငန်းများ၌ဖျက်လိုက်သောမှတ်တမ်းအရေအတွက်ကိုပိုမိုတိကျစွာရယူနိုင်ပြီးတည်ငြိမ်မှုနှင့်ကိုက်ညီမှုနှင့်ကိုက်ညီမှုရှိစေရန်။