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

PDostatement မှ batch စစ်ဆင်ရေးများ၏ကွပ်မျက်မှုရလဒ်များကိုမည်သို့ဆုံးဖြတ်ရမည်နည်း :: Rowcount

gitbox 2025-05-28

PHP တွင် PDO (PHP Data Obserts) တွင်ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်ရန်ကူညီနိုင်သည့်ဒေတာဘေ့စ်များနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းအတွက်အားကောင်းသော interface ကိုပေးသည်။ အပန်းဖြေစစ်ဆင်ရေးများသည်ဒေတာဘေ့စ်အရောင်းအ 0 ယ်တစ်ခုတွင်ထည့်သွင်းမှုအမျိုးမျိုး, အသစ်ပြောင်းခြင်းများ, PDostatement :: Rowcount သည် SQL query အောင်မြင်စွာကွပ်မျက်ခံရခြင်းရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသောထိခိုက်မည့်အတန်းအရေအတွက်ကိုရရှိရန်အသုံးပြုသောနည်းလမ်းဖြစ်သည်။

ဤဆောင်းပါးသည် PDostatement ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးမည်။ : Rowcount fatch fatch ကိုအသုတ်ခွဲစိတ်ကုသမှုကိုအောင်မြင်စွာလုပ်ဆောင်နိုင်,

1 ။ PDostatement ၏အခန်းကဏ် :::: regcount

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

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

  • update ကိုစစ်ဆင်ရေးကာလအတွင်းလိုင်းဘယ်လောက်ပြုပြင်ခဲ့သလဲ

  • Delete စစ်ဆင်ရေးတွင်အတန်းမည်မျှဖျက်ပစ်သည်

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

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

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

နမူနာကုဒ်:

ဤတွင် Batch Insert Intert လုပ်ငန်းများလုပ်ဆောင်ရန် PDO ကိုအသုံးပြုခြင်းနှင့်၎င်းကို Rowcount မှတစ်ဆင့်အောင်မြင်မှုရှိမရှိဆုံးဖြတ်ရန် PDO ကို အသုံးပြုခြင်း၏ဥပမာတစ်ခုဖြစ်သည်။

 <?php
// ဒေတာဘေ့စ် connection settings
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = 'password';

try {
    // ဖန်တီး PDO နမူနာ
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

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

    // batches အတွက်ဒေတာထည့်သွင်းပါ
    $sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
    $stmt = $pdo->prepare($sql);

    // ဖြည့်စွက်ခံရဖို့ batch ဒေတာယူဆ
    $users = [
        ['name' => 'John Doe', 'email' => '[email protected]'],
        ['name' => 'Jane Doe', 'email' => '[email protected]'],
        ['name' => 'Alice', 'email' => '[email protected]']
    ];

    $success = true;
    foreach ($users as $user) {
        // parameters တွေကိုချည်နှင့်သွင်းစစ်ဆင်ရေးလုပ်ဆောင်ခြင်း
        $stmt->bindParam(':name', $user['name']);
        $stmt->bindParam(':email', $user['email']);
        
        if (!$stmt->execute()) {
            // ကွပ်မျက်ပျက်ကွက်လျှင်,မအောင်မြင်ပါ
            $success = false;
            break;
        }

        // ဒေတာထည့်သွင်းရှိမရှိစစ်ဆေးပါ
        if ($stmt->rowCount() == 0) {
            $success = false;
            break;
        }
    }

    // တင်သွင်းမှုတင်သွင်း,သွင်းအောင်မြင်သောလျှင်
    if ($success) {
        $pdo->commit();
        echo "အောင်မြင်သောသုတ်သွင်းထည့်သွင်း!";
    } else {
        $pdo->rollBack();
        echo "အမြောက်အများမအောင်မြင်ပါ!";
    }
} catch (PDOException $e) {
    // ငွေပေးငွေယူ Rollback နှင့်အမှားမက်ဆေ့ခ်ျကိုပြသ
    $pdo->rollBack();
    echo "ဒေတာဘေ့စ်အမှား:" . $e->getMessage();
}
?>

Code ဖော်ပြချက်:

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

  2. ငွေပေးငွေယူစီမံခန့်ခွဲမှု - အသုတ် insert လုပ်ငန်းများ၏အနုမြူဗုံးကိုသေချာစေရန် $ PDO -> BeginTransactions () မှငွေလွှဲခြင်းများဖြင့်ငွေပေးချေမှုကိုစတင်ပါ။

  3. Execute Introtiation : Forach Loop တွင်အသုံးပြုသူအချက်အလက်များကိုတစ်ခုဖြင့်ထည့်သွင်းထားသည်။ တစ်ခုချင်းစီထည့်သွင်းမထည့်သွင်းမီ bindparam parameters တွေကိုချည်နှောင်ခြင်းနှင့် SQL ထုတ်ပြန်ချက်များကို execute ရန်။

  4. Rows အရေအတွက်ကိုစစ်ဆေးပါ - rowcount လုပ်ငန်းတစ်ခုစီသည်ဒေတာဗေ့စ်တွင်အတန်းများပေါ်တွင်သက်ရောက်မှုရှိမရှိစစ်ဆေးရန် Rowcount () နည်းလမ်းကိုသုံးပါ။ အကယ်. Regcount () သည် 0 သို့ပြန်လာလျှင်၎င်းသည်အချက်အလက်များမဖြည့်စွက်ခြင်းနှင့်စစ်ဆင်ရေးမအောင်မြင်ဟုဆိုလိုသည်။

  5. ငွေပေးချေမှုကျူးလွန်ခြင်းသို့မဟုတ် Rollback : အကယ်. ထည့်သွင်းမှုလုပ်ဆောင်မှုများအားလုံးသည်ငွေပေးချေမှုကိုကျူးလွန်ရန် $ pdo-> commit () ကိုခေါ်ပါ။

3 ။ အခြားအသုတ်စစ်ဆင်ရေးကိုဆုံးဖြတ်ရန် Rowcount ကို သုံးပါ

စစ်ဆင်ရေးများထည့်သွင်းခြင်းအပြင် rowcount ကို အသုတ်မွမ်းမံမှုများသို့မဟုတ်စစ်ဆင်ရေးများကိုဖျက်ရန်အသုံးပြုနိုင်သည်။ အသစ်ပြောင်းခြင်းသို့မဟုတ်ဖျက်ခြင်းတွင်စစ်ဆင်ရေးကိုပယ်ဖျက်နေစဉ်အတွင်းသတ်မှတ်ထားသော Rowcount ၏ပြန်လာတန်ဖိုးကို အခြေခံ. သတ်မှတ်ထားသောအတန်းကိုအောင်မြင်စွာအဆင့်မြှင့်တင်ခြင်းရှိမရှိကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။

ဥပမာ - အသုတ်အသစ်ပြောင်းခြင်း

 <?php
// ဒေတာဘေ့စ် connection settings
$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = 'password';

try {
    // ဖန်တီး PDO နမူနာ
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

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

    // အသုတ်မွမ်းမံမှုစစ်ဆင်ရေး
    $sql = "UPDATE users SET email = :email WHERE name = :name";
    $stmt = $pdo->prepare($sql);

    // data ကို updated ခံရဖို့ယူဆ
    $users = [
        ['name' => 'John Doe', 'email' => '[email protected]'],
        ['name' => 'Jane Doe', 'email' => '[email protected]']
    ];

    $success = true;
    foreach ($users as $user) {
        // parameters တွေကိုချည်နှင့် update ကိုစစ်ဆင်ရေးလုပ်ဆောင်ပါ
        $stmt->bindParam(':name', $user['name']);
        $stmt->bindParam(':email', $user['email']);
        
        if (!$stmt->execute()) {
            // ကွပ်မျက်ပျက်ကွက်လျှင်,မအောင်မြင်ပါ
            $success = false;
            break;
        }

        // ဒေတာကို updated ရှိမရှိစစ်ဆေးပါ
        if ($stmt->rowCount() == 0) {
            $success = false;
            break;
        }
    }

    // တင်သွင်းမှုတင်သွင်း,update ကိုအောင်မြင်လျှင်
    if ($success) {
        $pdo->commit();
        echo "အောင်မြင်သောအသုတ် update ကို!";
    } else {
        $pdo->rollBack();
        echo "အမြောက်အများမအောင်မြင်ပါ!";
    }
} catch (PDOException $e) {
    // ငွေပေးငွေယူ Rollback နှင့်အမှားမက်ဆေ့ခ်ျကိုပြသ
    $pdo->rollBack();
    echo "ဒေတာဘေ့စ်အမှား:" . $e->getMessage();
}
?>

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

PDostatement :: Rowcount function ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အသုတ်စစ်ဆင်ရေးကိုအောင်မြင်စွာလုပ်ဆောင်နိုင်ခြင်းရှိမရှိကိုအလွယ်တကူဆုံးဖြတ်နိုင်သည်။ ၎င်းသည်အသုတ်သွင်းခြင်း, စစ်ဆင်ရေးများကို update လုပ်ခြင်း, ပယ်ဖျက်ခြင်းသို့မဟုတ်ဖျက်ခြင်းရှိမရှိစစ်ဆင်ရေးကို ROWCount မှပြန်လာသောအတန်းအရေအတွက်ပေါ် မူတည်. အောင်မြင်စွာအကောင်အထည်ဖော်ခြင်းရှိမရှိကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။ ဤချဉ်းကပ်မှုသည်စစ်ဆင်ရေးများအထူးသဖြင့်ဒေတာရှေ့နောက်ညီညွတ်မှုနှင့်သမာဓိရှိခြင်းကိုသေချာစေရန်အတွက်လုပ်ငန်းများအောင်မြင်ရန်လိုအပ်သောအခြေအနေများအတွက်အလွန်သင့်လျော်သည်။