လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI :: get_warenings ကိုအသုံးပြုသောအခါထပ်တူသော့ချက်များကို detect detect

MySQLI :: get_warenings ကိုအသုံးပြုသောအခါထပ်တူသော့ချက်များကို detect detect

gitbox 2025-05-29

MySQLI :: get_warenings () ကို ဘာကြောင့်သုံးဖို့လိုတာလဲ။

When executing batch INSERT operations, if INSERT IGNORE or ON DUPLICATE KEY UPDATE is used, MySQL will not directly report an error, but will generate warnings. ဤအချိန်တွင်အမှားအယွင်းများယန္တရားမှတစ်ဆင့်ပ conflict ိပက်ခသတင်းအချက်အလက်ရယူရန်ခက်ခဲသည်။ MySQLI :: Get_warenings () သည် ပ conflict ိပက်ခများကိုမည်သည့်မှတ်တမ်းတင်သည်ကိုနားလည်ရန်ဤသတိပေးချက်များကိုရရှိနိုင်သည်။

နမူနာကုဒ်

အောက်ဖော်ပြပါဒေတာစားပွဲ၌ အသုံးပြုသူများ ရှိသည်ဆိုပါစို့, ထူးခြားသောသော့ချက် အီးမေးလ်ကို သတ်မှတ်ထားသည်။

 CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50),
  email VARCHAR(100) UNIQUE
);

ကျွန်ုပ်တို့သည်ထပ်တူ အီးမေးလ်များ ဖြင့်အသုတ်တွင်ဒေတာများစွာကိုထည့်သွင်းရန်ကြိုးစားသည်။

 <?php
$mysqli = new mysqli("localhost", "root", "password", "testdb");

if ($mysqli->connect_errno) {
    die("ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်မအောင်မြင်ပါ: " . $mysqli->connect_error);
}

// အသုတ်သွင်းကိုပြင်ဆင်ပါSQLအသေအချာပေြာဆိုချက်
$sql = "INSERT IGNORE INTO users (name, email) VALUES 
        ('Alice', '[email protected]'), 
        ('Bob', '[email protected]'),
        ('Charlie', '[email protected]')";  // အာရုံစိုက်ပါemailပြန်ဆို

if ($mysqli->query($sql)) {
    echo "ဖြည့်စွက်ထည့်ပါ。<br>";

    // သွား get_warnings() 检测是否有ပြန်ဆို键冲突警告
    if ($warning = $mysqli->get_warnings()) {
        do {
            echo "သတိပေးအဆင့်: " . $warning->get_errno() . "<br>";
            echo "သတိပေးစာ: " . $warning->get_message() . "<br>";
        } while ($warning->next());
    } else {
        echo "သတိပေးစာမရှိပါ。";
    }
} else {
    echo "မအောင်မြင်ပါ: " . $mysqli->error;
}

$mysqli->close();

အထက်ပါကုဒ်တွင်ဒေတာများကိုထည့်သွင်းရန်ကြိုးစားရန် Insert Ignam ကို ကျွန်ုပ်တို့အသုံးပြုသည်။ ထပ်တူ အီးမေးလ်ကို ကြုံတွေ့ရသောအခါ MySQL သည်မှတ်တမ်းထည့်သွင်းမှုကိုလျစ်လျူရှုထားသော်လည်းသတိပေးချက်တစ်ခုပြုလုပ်သည်။ ဤသတိပေးအချက်အလက်များကို MySQLI-> Get_warenings () ထပ်တူအဓိကပ conflict ိပက်ခများရှိသည်ကိုသိရန် $ MySQLI-> Get_warenings () မှရရှိနိုင်သည်။

MySQLI_warning အရာဝတ်ထု၏အသေးစိတ်ရှင်းပြချက်

MySQLI :: Get_warenings () MySQLI_warning အရာဝတ်ထုကိုပြန်ပို့သည်။ အသေးစိတ်အချက်အလက်များရရန်အောက်ပါနည်းလမ်းကိုသင်ခေါ်ဆိုနိုင်သည်။

  • Get_errno () - သတိပေးချက်အတွက်အမှားကုဒ်ကိုရယူပါ

  • Get_Message () - သတိပေးစာစာသားကိုရယူပါ

  • လာမယ့် () : နောက်သတိပေးချက်သို့ရွှေ့ပါ (ဆိုပါက)

များသောအားဖြင့်ထပ်ခါတလဲလဲအဓိကပ conflicts ိပက်ခများအတွက်သတိပေးကုဒ်သည် 1062 ဖြစ်ပြီးသက်ဆိုင်ရာစာစောင်တွင် "မိတ္တူပွား" ပါလိမ့်မည်။

မှတ်သားရန်အရာ

  1. အကယ်. လျစ်လျူရှုခြင်း သို့မဟုတ်အလားတူပေါ်လစီများကိုမသုံးပါကထပ်တူအဓိကပ conflicts ိပက်ခများသည်ရှာဖွေမှုကိုမအောင်မြင်နိုင်ပါ။

  2. Get_warenings () သတိပေးကွင်းဆက်ကိုပြန်ပို့ပြီးသတိပေးချက်အားလုံးကိုရရန်ကွင်းဆက်ဖြတ်သန်းရန်လိုအပ်သည်။

  3. သတိပေးသတင်းအချက်အလက်အတော်လေးအသေးစိတ်ဖော်ပြပြီးပ conflict ိပက်ခစံချိန်ကိုတိကျစွာနေရာချထားရန်အသုံးပြုနိုင်သည်။


MySQLI :: Get_warenings () Batch Inserties မှတဆင့်ထပ်တူထပ်မျှပ conflicts ိပက်ခများကို ထပ်မံ. ထပ်တူထပ်မျှပ conflicts ိပက်ခများကိုပိုမိုခဲယဉ်းသောအဓိကပ conflicts ိပက်ခများကိုပိုမိုခဲယဉ်းသောအဓိကပ conflicts ိပက်ခများကိုပိုမိုခဲယဉ်းသောအဓိကပ conflicts ိပက်ခများကိုပိုမိုခဲယဉ်းသောအဓိကပ conflicts ိပက်ခများကိုပိုမိုခဲယဉ်းသောအဓိကပ conflicts ိပက်ခများကိုပိုမိုခဲယဉ်းသောအဓိကပ conflicts ိပက်ခများကိုပိုမိုခဲယဉ်းစွာကိုင်တွယ်နိုင်သော်လည်းအချက်အလက်အရည်အသွေးပြ issues နာများကိုချက်ချင်းနားလည်ပြီး,


 <?php
$mysqli = new mysqli("localhost", "root", "password", "testdb");

if ($mysqli->connect_errno) {
    die("ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်မအောင်မြင်ပါ: " . $mysqli->connect_error);
}

$sql = "INSERT IGNORE INTO users (name, email) VALUES 
        ('Alice', '[email protected]'), 
        ('Bob', '[email protected]'),
        ('Charlie', '[email protected]')";

if ($mysqli->query($sql)) {
    echo "ဖြည့်စွက်ထည့်ပါ。<br>";

    if ($warning = $mysqli->get_warnings()) {
        do {
            echo "သတိပေးအဆင့်: " . $warning->get_errno() . "<br>";
            echo "သတိပေးစာ: " . $warning->get_message() . "<br>";
        } while ($warning->next());
    } else {
        echo "သတိပေးစာမရှိပါ。";
    }
} else {
    echo "မအောင်မြင်ပါ: " . $mysqli->error;
}

$mysqli->close();