PHP တွင် PDO (PHP Data Obserts) ကိုအသုံးပြုခြင်းသည်ဒေတာဘေ့စ်လုပ်ငန်းများလုပ်ဆောင်ရန်အတွက်အသုံးပြုသောအရာဖြစ်သည်။ အထူးသဖြင့် Batch SQL operations များကိုဖျော်ဖြေတင်ဆက်သည့်အခါ PDO :: query quert sql ထုတ်ပြန်ချက်များကို ထည့်သွင်းခြင်း , မွမ်းမံခြင်း , သို့သော် PDO :: Batch Operations များအတွက် PDO :: :: ကျိုးကြောင်းဆီလျော်သောရှောင်ရှားမှုသည်အစီအစဉ်၏ထိရောက်မှုနှင့်တည်ငြိမ်မှုကိုသေချာစေနိုင်သည်။
PDO :: Lever သည် ရလဒ်ကိုမပြန်မလာသော SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်ရန် (သို့) တစ်ခုထက် ပို. လုပ်ဆောင်ရန်အသုံးပြုသည်။ ၎င်း၏ပြန်လာတန်ဖိုးမှာသက်ရောက်မှုရှိသောအတန်းအရေအတွက်ဖြစ်သည်။ ဥပမာများမှာအောက်ပါအတိုင်းဖြစ်သည် -
<?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$sql = "DELETE FROM users WHERE last_login < '2023-01-01'";
$affectedRows = $pdo->exec($sql);
echo "ဖျက်ပါ $affectedRows အိုကေ";
?>
သတိပြုရန်:
ရလဒ်အလုံးအရင်းကိုပြန်လည်ရောက်ရှိသည့် ရွေးချယ်မှု ထုတ်ပြန်ချက်များကို execute လုပ်ရန် Exec ကို အသုံးမပြုပါ။
အကယ်. SQL ကြေငြာချက်သည် execute လုပ်ရန်ပျက်ကွက်ပါက execute သည် မှားယွင်းစွာ ပြန်ပို့သည်။
Batch Instruster (သို့) နောက်ဆုံးသတင်းများကိုဖျော်ဖြေတင်ဆက်သည့်အခါအစပြုသူများသည် SQL ထုတ်ပြန်ချက်များကိုတိုက်ရိုက်ဖြည့်ဆည်းပေးပြီး Execute တစ်ခုတည်းမှ Execute လုပ်လိမ့်မည်။ ဥပမာအားဖြင့်:
<?php
$sql = "INSERT INTO users (name, age) VALUES ('Alice', 25);";
$sql .= "INSERT INTO users (name, age) VALUES ('Bob', 30);";
$pdo->exec($sql);
?>
ဤစာအရေးအသားနည်းလမ်းသည်ဖြစ်နိုင်ခြေရှိသော်လည်းအောက်ပါအားနည်းချက်များရှိသည်။
SQL injection အန္တရာယ်မြင့်မားသည် ဒေတာများကိုတိုက်ရိုက်ခွဲခြားခြင်းသည်လုံခြုံရေးပြ problems နာများကိုအလွယ်တကူဖြစ်ပေါ်စေနိုင်သည်။
စွမ်းဆောင်ရည်မြင့်မားလိမ့်မည်မဟုတ်ပါ Multiple SQL ထုတ်ပြန်ချက်များကိုပေါင်းစည်းပြီးကွပ်မျက်ခံရပြီး Database သည် 0 န်ထုပ်ဝန်ပိုးကိုခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်သော့ခတ်များကိုစောင့်ဆိုင်းနိုင်သည်။
တစ်ခုခုမှားသွားရင်နေရာရှာဖို့ခက်ခဲပါတယ် အကယ်. SQL ကြေငြာချက်မအောင်မြင်ပါကမည်သူမည်ဝါဖြစ်သည်ကို သင် မပြောနိုင်ပါ။
အရောင်းအ 0 ယ်များတွင်အထုပ်များကိုအရောင်းအ 0 ယ်များကိုလုပ်ဆောင်ရန်အကြံပြုသည်, ဒေတာဘေ့စ်တင်ပြချက်များနှင့်စွမ်းဆောင်ရည်တိုးတက်အောင်ပြုလုပ်ခြင်း -
<?php
$pdo->beginTransaction();
try {
foreach ($dataList as $data) {
$sql = "UPDATE users SET age = {$data['age']} WHERE name = '{$data['name']}'";
$pdo->exec($sql);
}
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
echo "ဆုံးရှုံး: " . $e->getMessage();
}
?>
အရောင်းအ 0 ယ်များအားလုံးသည်အောင်မြင်မှုများကိုအောင်မြင်ရန် (သို့) ပျက်ကွက်ခြင်း,
ပေါင်းစပ်ခြင်းနှင့် SQL injection ကိုရှောင်ရှားရန် ပြင်ဆင်ခြင်း နှင့် execute လုပ်ပါ ။
<?php
$stmt = $pdo->prepare("INSERT INTO users (name, age) VALUES (:name, :age)");
$pdo->beginTransaction();
foreach ($dataList as $data) {
$stmt->execute([':name' => $data['name'], ':age' => $data['age']]);
}
$pdo->commit();
?>
၎င်းသည် SQL ကိုခွဲထုတ်ခြင်းကြောင့်ဖြစ်ပေါ်လာသောပြ problems နာများကိုရှောင်ရှားသည်။
အကယ်. ဒေတာဘေ့စ်ကိုထောက်ခံပါကထည့်သွင်းထားသောထည့်သွင်းချက်များကိုအသုတ်ထည့်သွင်းပါကပေါင်းစည်းနိုင်သည်။
<?php
$values = [];
$params = [];
foreach ($dataList as $index => $data) {
$values[] = "(:name$index, :age$index)";
$params[":name$index"] = $data['name'];
$params[":age$index"] = $data['age'];
}
$sql = "INSERT INTO users (name, age) VALUES " . implode(',', $values);
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
?>
Batch Interpers သည်ဒေတာဘေ့စ်အပြန်အလှန်ဆက်သွယ်မှုအရေအတွက်ကိုလျှော့ချပြီးစွမ်းဆောင်ရည်ကိုများစွာတိုးတက်စေသည်။
SQL ထုတ်ပြန်ချက်များကိုဖြည့်ဆည်းပေးခြင်းသည်စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်သော်လည်း SQL ထုတ်ပြန်ချက်များသည် Database ကန့်သတ်ချက်များထက် ကျော်လွန်. စွမ်းဆောင်ရည်ပျက်စီးခြင်းကိုဖြစ်ပေါ်စေသည်။ တစ်ချိန်တည်းတွင်ကြီးမားသောဖြစ်ရပ်မှန်ကိုရှောင်ရှားရန်တစ်ချိန်တည်းတွင်ဒေတာ 500 ကိုလုပ်ဆောင်ခြင်းကဲ့သို့သောအသုတ်အရွယ်အစားကိုကျိုးကြောင်းဆီလျော်ခွဲထားသည်။
အမျိုးမျိုးသော SQL ကွပ်မျက်မှုမျိုးစုံကိုတိုက်ရိုက်မအောင်မြင်ပါ နှင့်လုံခြုံရေးနှင့်မမှန်ကန်သောနေရာချထားမှုကိုဂရုပြုပါ။
တင်သွင်းမှု overhead ကိုလျှော့ချရန်နှင့်ဒေတာသမာဓိကိုသေချာစေရန် ငွေပေးငွေယူကှကျ batch batch စစ်ဆင်ရေးကိုသုံးပါ ။
SQL Injection ကိုကာကွယ်ရန်နှင့်ထိရောက်မှုကိုတိုးတက်စေရန် Preprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုရန်အကြံပြုသည် ။
Database Interactions အရေအတွက်ကိုလျှော့ချရန် Batch Insert SQL ကြေငြာချက်ကိုသုံးပါ ။
အလွန်အကျွံ sql ကြောင့်ဖြစ်ပေါ်လာသောစွမ်းဆောင်ရည်ပြ problems နာများကိုရှောင်ရှားရန် စစ်ဆင်ရေးတစ်ခုချင်းစီတွင်အချက်အလက်များ၏အချက်အလက်ပမာဏကိုထိန်းချုပ်ပါ ။
ဤနည်းလမ်းများကိုအသုံးပြုခြင်းသည် PDO :: Excles ecovering လုပ်ခြင်းနှင့်ဒေတာဘေ့စ်လုပ်ငန်းများ၏ထိရောက်မှုနှင့်လုံခြုံမှုကိုတိုးတက်စေရန်အသုံးပြုသောစွမ်းဆောင်ရည်မြှင့်တင်ခြင်းများကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။