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

PDostatement :: Batch Function ကို Batch Inform လုပ်ဆောင်ချက်များအနေဖြင့်ထည့်သွင်းမှုသည်အောင်မြင်မှုရှိ,

gitbox 2025-05-19

ဒေတာဘေ့ ်လုပ်ငန်းများကိုအထူးသဖြင့်အသုတ်တွင်အချက်အလက်များကိုထည့်သွင်းသောအခါဒေတာအပိုင်းတိုင်းကိုမှန်ကန်စွာဖြည့်ဆည်းပေးရန်နှင့်ဒေတာရှေ့နောက်ညီမှုကိုထိန်းသိမ်းရန်သေချာစေရန်နှင့်ဒေတာရှေ့နောက်ညီမှုများကိုမှန်ကန်စွာထိန်းသိမ်းထားရန်သေချာစေရန်နှင့်ဒေတာရှေ့နောက်ညီမှုများကိုမှန်ကန်စွာထိန်းသိမ်းထားရန်သေချာစေရန်နှင့်ဒေတာရှေ့နောက်ညီမှုကိုထိန်းသိမ်းထားရန်သေချာစေရန်အတွက်အချက်အလက်များစွာပြုလုပ်ရန်နှင့်ဒေတာရှေ့နောက်ညီမှုကိုထိန်းသိမ်းထားရန်သေချာစေရန်အတွက်အချက်အလက်များကိုမှန်ကန်စွာဖြည့်ဆည်းပေးနိုင်ရန်အတွက်အရေးကြီးသည်။ PHP ၏ PDO ၏ PMOE Extension သည်အားကောင်းသောဒေတာဘေ့စ်စစ်ဆင်ရေးစွမ်းရည်များနှင့် pdostatement :: Rowcount function ကိုကျွန်ုပ်တို့အား SQL စစ်ဆင်ရေးအောင်မြင်စွာလုပ်ဆောင်သည်ကိုဆုံးဖြတ်ရန်ကူညီနိုင်သည်။ ဤဆောင်းပါးတွင် Batch Insert စစ်ဆင်ရေးများ၏အောင်မြင်မှုများကိုအတည်ပြုရန်နှင့်ဒေတာရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်ဤလုပ်ဆောင်မှုကိုမည်သို့အသုံးပြုရမည်ကိုလေ့လာပါမည်။

1 ။ PDO အခြေခံ

ပထမ ဦး စွာ PDO ၏အခြေခံအသုံးပြုမှုကိုသုံးသပ်ကြည့်ကြစို့။ PDO (PHP Data Obserts) သည် Unified database access interface ကိုထောက်ပံ့ပေးသော PHP တွင်တိုးချဲ့ခြင်းဖြစ်သည်။ ကျွန်ုပ်တို့သည် PDO မှတစ်ဆင့်ဒေတာဘေ့စ်ကို ဆက်သွယ်. SQL Query များကို execute လုပ်နိုင်သည်။

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

2 ။ Batch Insert လုပ်ငန်းများ၏အခြေခံအကောင်အထည်ဖော်မှု

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

 <?php
try {
    // ဖန်တီး PDO ဥပမာအားဖြင့်ဒေတာဘေ့စ်ကိုချိတ်ဆက်ပါ
    $pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");

    // တည်ဆောက်သည် PDO အမှား mode ကို
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

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

    // ဖြည့်စွက်ခံရဖို့အသုတ်ဒေတာ
    $data = [
        ['name' => 'Alice', 'email' => '[email protected]'],
        ['name' => 'Bob', 'email' => '[email protected]'],
        ['name' => 'Charlie', 'email' => '[email protected]']
    ];

    // ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
    $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");

    // parameters တွေကို bind နှင့်ထည့်သွင်းပါ
    foreach ($data as $row) {
        $stmt->bindParam(':name', $row['name']);
        $stmt->bindParam(':email', $row['email']);
        $stmt->execute();
    }

    // တင်သွင်းမှုတင်သွင်း
    $pdo->commit();
    
    // ဖြည့်စွက်အတန်း၏နောက်ဆုံးအရေအတွက်ကိုရယူပါ
    $insertedRows = $stmt->rowCount();
    echo "အောင်မြင်စွာဖြည့်စွက် $insertedRows လိုင်းဒေတာ。";

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

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

3 ။ ဒေတာရှေ့နောက်ညီညွတ်မှုသေချာပါစေ

Batch Insert Insert လုပ်ငန်းများ၌ဒေတာတိုင်းကိုမှန်ကန်စွာဖြည့်စွက်ခြင်းနှင့်အမှားများကိုမှားယွင်းစွာဖြည့်စွက်ရန်သေချာစေရန်အလွန်အရေးကြီးသည်။ ဒေတာရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်ကျွန်ုပ်တို့သည်အစုအဝေးခွဲစိတ်မှုတစ်လျှောက်လုံးတွင်အရောင်းအ 0 ယ်များ ( beginransaction) နှင့် commit ) ကိုအသုံးပြုလေ့ရှိသည်။ ၎င်းသည်အချို့သောအချက်အလက်များကိုအောင်မြင်စွာဖြည့်စွက်နိုင်သည့်အခြေအနေကိုရှောင်ရှားနိုင်ပြီးအချို့သောအချက်အလက်များကိုဖြည့်စွက်ခြင်းမအောင်မြင်ပါ။

သွင်းသည်အောင်မြင်မှုရှိမရှိဆုံးဖြတ်ရန် Rowcount ကို သုံးပါ

Rowcount () သည် အကျိုးသက်ရောက်သောအတန်းအရေအတွက်ကိုပြန်လည်ရောက်ရှိသော်လည်း Batch Inserts အတွက်အချက်အလက်များသည်အောင်မြင်မှုရရှိပါက Regcount ၏ rowcount () သည်ကျွန်ုပ်တို့မျှော်လင့်ထားသည့်ထည့်သွင်းမှုအရေအတွက်နှင့်ညီမျှသင့်သည်။ ထည့်သွင်းမှုပျက်ကွက်မှုများရှိပါက Rowcount () ၏တန်ဖိုးသည်မျှော်မှန်းထားသည်ထက်နိမ့်ကျလိမ့်မည်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည်ထည့်သွင်းမှုသည် Regnount တန်ဖိုးကိုနှိုင်းယှဉ်ခြင်းအားဖြင့်အောင်မြင်မှုသည်အောင်မြင်မှုရှိမရှိကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။

 if ($stmt->rowCount() === count($data)) {
    echo "အချက်အလက်အားလုံးကိုအောင်မြင်စွာထည့်သွင်းထားသည်。";
} else {
    echo "အချို့ဒေတာသွင်းချက်မအောင်မြင်ပါ。";
    // 在此处可以进行အမှား处理,回滚或记录အမှား
}

အမှားကိုင်တွယ်ခြင်းနှင့် Rollback

Batch Instertion ကိုဖျော်ဖြေတင်ဆက်သည့်အခါအချို့သောအချက်အလက်ထည့်သွင်းမှုပျက်ကွက်လျှင်ပင်စစ်ဆင်ရေးအားလုံးကိုဒေတာဘေ့စ်၏ရှေ့နောက်ညီညွတ်မှုကိုထိန်းသိမ်းရန်နောက်သို့လှိမ့်ချရန်လိုအပ်သည်။ အရောင်းအ 0 ယ်များကိုအသုံးပြုခြင်းသည်အသုတ်ထည့်သွင်းမှုတစ်ခုလုံးကိုအောင်မြင်စွာသို့မဟုတ်ပျက်ကွက်ခြင်းများကိုသေချာစေသည်။

 try {
    $pdo->beginTransaction();
    
    foreach ($data as $row) {
        $stmt->bindParam(':name', $row['name']);
        $stmt->bindParam(':email', $row['email']);
        $stmt->execute();
    }

    // အားလုံးထည့်သွင်းအောင်မြင်ရန်သေချာပါစေ
    if ($stmt->rowCount() === count($data)) {
        $pdo->commit();
        echo "အားလုံးဒေတာသွင်းအောင်မြင်စွာ。";
    } else {
        throw new Exception("ဒေတာသွင်း,ပြန်အရောင်းအလှိမ့်。");
    }
} catch (Exception $e) {
    $pdo->rollBack();
    echo "ငွေပေးငွေယူ Loverback,အမှား信息:" . $e->getMessage();
}

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

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

  • PDostatement :: Rowcount () အသုတ်သွင်းစစ်ဆင်ရေးအောင်မြင်မှုရှိမရှိထိရောက်စွာဆုံးဖြတ်ရန်။

  • အရောင်းအ 0 ယ်များနှင့် တွဲဖက်. ၎င်းသည်အသုတ်သွင်းခြင်း၏အနုမြူဗုံးကိုသေချာစေပြီးတစ်စိတ်တစ်ပိုင်းထည့်သွင်းပျက်ကွက်ခြင်းကြောင့်ဖြစ်သည့်အချက်အလက်မကိုက်ညီမှုကိုရှောင်ရှားနိုင်သည်။

  • ဒေတာရှေ့နောက်ညီညွတ်မှုကိုထိန်းသိမ်းခြင်းသည်အသုတ်စစ်ဆင်ရေးများတွင်အဓိကအချက်ဖြစ်သည်။

ဤချဉ်းကပ်မှုမှတစ်ဆင့်အသုတ်တွင်ထည့်သွင်းထားသောအချက်အလက်များတိုင်းကိုကျွန်ုပ်တို့သေချာစွာဖြည့်ဆည်းပေးနိုင်ပြီးအချက်အလက်များ၏သမာဓိနှင့်ရှေ့နောက်ညီညွတ်မှုကိုအကြီးမားဆုံးအတိုင်းအတာအထိအောင်မြင်စွာဖြည့်ဆည်းပေးနိုင်ရန်သေချာစေနိုင်ပါသည်။

<footer style = "text-align: center;"> <p> ဆောင်းပါး link: [https://gitbox.net/insuccess) (https://gitbox.net/success) </ p> </ footer>
  • သက်ဆိုင်သောတက်(ဂ်)များ:

    PDOStatement