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

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

M66 2025-06-22

1 ။ PDO နှင့် pourprocessing ထုတ်ပြန်ချက်များကိုအဘယ်ကြောင့်သုံးပါ

SQL Delete ထုတ်ပြန်ချက်များကိုတည်ဆောက်ရာတွင် developer အများအပြားသည်ကြိုးများကိုတိုက်ရိုက်ပြုလုပ်လေ့ရှိသည်။

 $id = $_GET['id'];
$sql = "DELETE FROM users WHERE id = $id";

ဤနည်းလမ်းသည် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုအလွန်အားနည်းနေသည်။ ဥပမာအားဖြင့်, အန္တရာယ်ရှိတဲ့အသုံးပြုသူ 1 သို့မဟုတ် 1 = 1 ဖြတ်သန်းပါကစားပွဲတစ်ခုလုံး၏အကြောင်းအရာများကိုဖျက်ပစ်လိမ့်မည်။

PDO ၏ POPOCING ထုတ်ပြန်ချက်များကို အသုံးပြု. ဤပြ problem နာကိုလုံးဝရှောင်ရှားနိုင်သည်။ ၎င်းသည် SQL မှဒေတာများမှအချက်အလက်များကိုဒေတာများကိုသီးခြားစီဒေတာများကို SQL ထုတ်ပြန်ချက်များ၏တစ်စိတ်တစ်ပိုင်းအဖြစ်အဓိပ္ပာယ်ဖွင့်ဆိုရန်သေချာစေရန်။


2 ။ မှတ်တမ်းများကိုဖျက်ရန် PDO ကိုအသုံးပြုခြင်း၏အခြေခံဥပမာများ

PDO ကို အသုံးပြု. အသုံးပြုသူမှတ်တမ်းများကိုဖျက်ရန်လုံခြုံသောနည်းလမ်းဖြစ်သည်။

 <?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$username = 'root';
$password = 'your_password';

try {
    $pdo = new PDO($dsn, $username, $password);
    // ချွင်းချက်မှအမှား mode ကိုသတ်မှတ်ပါ
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // ကြိုတင်ပြင်ဆင်မှုများ
    $stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");

    // parameters တွေကိုချည်နှောင်ခြင်းနှင့် execute
    $id = 5; // ဥပမာတစ်ခုကနေဥပမာသို့မဟုတ် URL ရယူသုံးစွဲသူများID
    $stmt->bindParam(':id', $id, PDO::PARAM_INT);

    $stmt->execute();

    if ($stmt->rowCount()) {
        echo "မှတ်တမ်းများကိုအောင်မြင်စွာဖျက်လိုက်ပြီ。";
    } else {
        echo "ကိုက်ညီသောမှတ်တမ်းမရှိပါ。";
    }
} catch (PDOException $e) {
    echo "ဒေတာဘေ့စ်အမှား: " . $e->getMessage();
}
?>

ဤဥပမာတွင်ကျွန်ုပ်တို့သည် : ID placeholder ကို အသုံးပြု. ဒေတာအမျိုးအစားတွင်ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန် Bindaram မှတစ်ဆင့် variable များကို bindies မှတစ်ဆင့်ခုတ်ပါ။


3 ။ အမျိုးမျိုးသောအခြေအနေများအပေါ်အခြေခံပြီးမှတ်တမ်းများကိုဖျက်ပါ

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

 <?php
$stmt = $pdo->prepare("DELETE FROM login_logs WHERE user_id = :user_id AND login_time < :before_time");

$user_id = 3;
$before_time = '2024-01-01 00:00:00';

$stmt->bindParam(':user_id', $user_id, PDO::PARAM_INT);
$stmt->bindParam(':before_time', $before_time);

$stmt->execute();

4 ။ ပြောင်းလဲနေသောအခြေအနေများနှင့်မည်သို့ကိုင်တွယ်ရမည်နည်း

အကယ်. ဖျက်ခြင်းအခြေအနေများကို dynamically ထုတ်ပေးသည်ဆိုပါကရှေ့အဆုံးမှ cheat box များရှိသည့်အကွက်များကိုသုတ်လိမ်းခြင်းကဲ့သို့သော dynamically ထုတ်ပေးသည်ဆိုပါက၎င်းကိုသင်တည်ဆောက်နိုင်သည်။

 <?php
$ids = [2, 5, 7]; // ပုံစံသို့မဟုတ်ရှေ့အဆုံးကနေ ID စာရင်း

// placeholder တစ်ခုတည်ဆောက် SQL
$placeholders = implode(',', array_fill(0, count($ids), '?'));
$sql = "DELETE FROM users WHERE id IN ($placeholders)";
$stmt = $pdo->prepare($sql);

// Execution ကြေငြာချက်,အားလုံး parameters တွေကိုချည်နှောင်
$stmt->execute($ids);

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


5 ။ လုံခြုံရေးအကြံဥာဏ်

  1. အသုံးပြုသူ input ကို SQL သို့တိုက်ရိုက်မကြည့်ပါနှင့်။

  2. binding parameters တွေကိုအသုံးပြုတဲ့အခါဒေတာအမျိုးအစားများကိုသတ်မှတ်တဲ့အခါ (ဥပမာ PDO :: Param_int ) ကိုပြသတဲ့အခါလုံခြုံရေးနဲ့စွမ်းဆောင်ရည်ကိုတိုးတက်စေနိုင်တယ်။

  3. ဖျက်ခြင်းမပြုမီ, operty operty တည်ရှိရှိမရှိအတည်ပြုရန်ရွေးချယ်မှုစစ်ဆေးမှုကိုသင်လုပ်ဆောင်နိုင်သည်။

  4. မတော်တဆဖျက်ခြင်းကိုရှောင်ရှားရန်ငွေပေးငွေယူ ( beginransacingsaction () /) / commit () / ကျူးလွန် ) ကိုသုံးပါ။


6 ။ Interface Deletion မှတ်တမ်းများနှင့်ပေါင်းစပ်ခြင်း (ပြန်လည်နေရာချထားရေးမျက်နှာပြင်ဥပမာ)

အကယ်. သင်သည် HTTP တောင်းဆိုမှုအပေါ် အခြေခံ. စံချိန်ကိုဖျက်လိုပါက httpace ကို httpace မှတစ်ဆင့် https://m66.net/api/api/api/delete_user.php?id=9 , သင်ဤကဲ့သို့သောရေးထားနိုင်သည်။

 <?php
if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id'])) {
    $id = (int) $_GET['id'];

    $stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");
    $stmt->bindParam(':id', $id, PDO::PARAM_INT);
    $stmt->execute();

    echo json_encode([
        'success' => true,
        'message' => 'အသုံးပြုသူကိုအောင်မြင်စွာပယ်ဖျက်',
    ]);
} else {
    http_response_code(400);
    echo json_encode([
        'success' => false,
        'message' => 'တောင်းဆိုမှုတရားမဝင်ဖြစ်ပါတယ်',
    ]);
}
?>

interface ဒီဇိုင်းတွင် Input Verification နှင့် Parameter သည် APIs မှတစ်ဆင့်တိုက်ခိုက်မှုများမှကာကွယ်ရန်အာရုံစိုက်သင့်သည်။

  • သက်ဆိုင်သောတက်(ဂ်)များ:

    PDOStatement