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 :: Get_warenings () MySQLI_warning အရာဝတ်ထုကိုပြန်ပို့သည်။ အသေးစိတ်အချက်အလက်များရရန်အောက်ပါနည်းလမ်းကိုသင်ခေါ်ဆိုနိုင်သည်။
Get_errno () - သတိပေးချက်အတွက်အမှားကုဒ်ကိုရယူပါ
Get_Message () - သတိပေးစာစာသားကိုရယူပါ
လာမယ့် () : နောက်သတိပေးချက်သို့ရွှေ့ပါ (ဆိုပါက)
များသောအားဖြင့်ထပ်ခါတလဲလဲအဓိကပ conflicts ိပက်ခများအတွက်သတိပေးကုဒ်သည် 1062 ဖြစ်ပြီးသက်ဆိုင်ရာစာစောင်တွင် "မိတ္တူပွား" ပါလိမ့်မည်။
အကယ်. လျစ်လျူရှုခြင်း သို့မဟုတ်အလားတူပေါ်လစီများကိုမသုံးပါကထပ်တူအဓိကပ conflicts ိပက်ခများသည်ရှာဖွေမှုကိုမအောင်မြင်နိုင်ပါ။
Get_warenings () သတိပေးကွင်းဆက်ကိုပြန်ပို့ပြီးသတိပေးချက်အားလုံးကိုရရန်ကွင်းဆက်ဖြတ်သန်းရန်လိုအပ်သည်။
သတိပေးသတင်းအချက်အလက်အတော်လေးအသေးစိတ်ဖော်ပြပြီးပ 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();