PHP တွင် PDO (PHP Data Obserts) တွင်ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်ရန်ကူညီနိုင်သည့်ဒေတာဘေ့စ်များနှင့်အပြန်အလှန်ဆက်သွယ်ခြင်းအတွက်အားကောင်းသော interface ကိုပေးသည်။ အပန်းဖြေစစ်ဆင်ရေးများသည်ဒေတာဘေ့စ်အရောင်းအ 0 ယ်တစ်ခုတွင်ထည့်သွင်းမှုအမျိုးမျိုး, အသစ်ပြောင်းခြင်းများ, PDostatement :: Rowcount သည် SQL query အောင်မြင်စွာကွပ်မျက်ခံရခြင်းရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသောထိခိုက်မည့်အတန်းအရေအတွက်ကိုရရှိရန်အသုံးပြုသောနည်းလမ်းဖြစ်သည်။
ဤဆောင်းပါးသည် PDostatement ကိုမည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးမည်။ : Rowcount fatch fatch ကိုအသုတ်ခွဲစိတ်ကုသမှုကိုအောင်မြင်စွာလုပ်ဆောင်နိုင်,
PDostatement :: Rowcount နည်းလမ်းသည်နောက်ဆုံး SQL ကြေငြာချက်ကြောင့်ထိခိုက်သောအတန်းအရေအတွက်ကိုပြန်ပို့သည်။ ၎င်းကိုအကဲဖြတ်ရန်အသုံးပြုနိုင်သည်။
ထည့်သွင်းစစ်ဆင်ရေးကာလအတွင်းလိုင်းမည်မျှအောင်မြင်စွာဖြည့်စွက်ခဲ့သနည်း
update ကိုစစ်ဆင်ရေးကာလအတွင်းလိုင်းဘယ်လောက်ပြုပြင်ခဲ့သလဲ
Delete စစ်ဆင်ရေးတွင်အတန်းမည်မျှဖျက်ပစ်သည်
သို့သော်လည်းဒေတာဘေ့စ်ယာဉ်မောင်းအားလုံးသည်ထိခိုက်နစ်နာသောအတန်းအရေအတွက်ကိုတိကျစွာပြန်ပို့နိုင်မည်မဟုတ်ကြောင်းသတိပြုသင့်သည်မှာအထူးသဖြင့်အချို့ရွေးချယ်မှုမေးချက်များအတွက်မူတည်သည်။ Batch Operations ကိုဖျော်ဖြေတင်ဆက်သည့်အခါ 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();
}
?>
ဒေတာဘေ့စ်ဆက်သွယ်မှု - ပထမအချက်မှာကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန် PDO ကို အသုံးပြုသည်။
ငွေပေးငွေယူစီမံခန့်ခွဲမှု - အသုတ် insert လုပ်ငန်းများ၏အနုမြူဗုံးကိုသေချာစေရန် $ PDO -> BeginTransactions () မှငွေလွှဲခြင်းများဖြင့်ငွေပေးချေမှုကိုစတင်ပါ။
Execute Introtiation : Forach Loop တွင်အသုံးပြုသူအချက်အလက်များကိုတစ်ခုဖြင့်ထည့်သွင်းထားသည်။ တစ်ခုချင်းစီထည့်သွင်းမထည့်သွင်းမီ bindparam parameters တွေကိုချည်နှောင်ခြင်းနှင့် SQL ထုတ်ပြန်ချက်များကို execute ရန်။
Rows အရေအတွက်ကိုစစ်ဆေးပါ - rowcount လုပ်ငန်းတစ်ခုစီသည်ဒေတာဗေ့စ်တွင်အတန်းများပေါ်တွင်သက်ရောက်မှုရှိမရှိစစ်ဆေးရန် Rowcount () နည်းလမ်းကိုသုံးပါ။ အကယ်. Regcount () သည် 0 သို့ပြန်လာလျှင်၎င်းသည်အချက်အလက်များမဖြည့်စွက်ခြင်းနှင့်စစ်ဆင်ရေးမအောင်မြင်ဟုဆိုလိုသည်။
ငွေပေးချေမှုကျူးလွန်ခြင်းသို့မဟုတ် Rollback : အကယ်. ထည့်သွင်းမှုလုပ်ဆောင်မှုများအားလုံးသည်ငွေပေးချေမှုကိုကျူးလွန်ရန် $ pdo-> commit () ကိုခေါ်ပါ။
စစ်ဆင်ရေးများထည့်သွင်းခြင်းအပြင် 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();
}
?>
PDostatement :: Rowcount function ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အသုတ်စစ်ဆင်ရေးကိုအောင်မြင်စွာလုပ်ဆောင်နိုင်ခြင်းရှိမရှိကိုအလွယ်တကူဆုံးဖြတ်နိုင်သည်။ ၎င်းသည်အသုတ်သွင်းခြင်း, စစ်ဆင်ရေးများကို update လုပ်ခြင်း, ပယ်ဖျက်ခြင်းသို့မဟုတ်ဖျက်ခြင်းရှိမရှိစစ်ဆင်ရေးကို ROWCount မှပြန်လာသောအတန်းအရေအတွက်ပေါ် မူတည်. အောင်မြင်စွာအကောင်အထည်ဖော်ခြင်းရှိမရှိကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။ ဤချဉ်းကပ်မှုသည်စစ်ဆင်ရေးများအထူးသဖြင့်ဒေတာရှေ့နောက်ညီညွတ်မှုနှင့်သမာဓိရှိခြင်းကိုသေချာစေရန်အတွက်လုပ်ငန်းများအောင်မြင်ရန်လိုအပ်သောအခြေအနေများအတွက်အလွန်သင့်လျော်သည်။