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

MySQLI :: Get_warenings MySQLI :: မေးမြန်းမှုနှင့်အတူအသုံးပြုရန်မှန်ကန်သောနည်းလမ်း

gitbox 2025-06-04

ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP ၏ MySQLI extension ကိုအသုံးပြုသောအခါ, အကယ်. ဤသတိပေးချက်များသည်အထူးသဖြင့်အစားထိုးခြင်း, ပုံမှန်တန်ဖိုးများ, ပုံမှန်တန်ဖိုးများ, query query () query () query () query () query query (mySqli :: mySqli :: mySqli :: get_warenings () get_warenings () ကိုပေါင်းစပ်ထားနိုင်လိမ့်မည်။

SQL သတိပေးချက်များကိုအဘယ်ကြောင့်လိုက်နာရန်လိုအပ်သနည်း။

ဤကဲ့သို့သော SQL တစ်ခုကိုစဉ်းစားပါ။

 $sql = "INSERT INTO users (username, email) VALUES ('this_is_a_very_long_username_that_will_be_truncated', '[email protected]')";

Username Field ၏အများဆုံးအရှည်မှာစာလုံးရေ 30 ဖြစ်ပြီးအထက်ဖော်ပြပါ SQL ၏အမှန်တကယ်ကွပ်ကဲခြင်းကိုဖြတ်တောက်လိမ့်မည်ဟုယူဆသည်။ အမှားမရှိချေရှိသော်လည်း သတိပေးချက် ထုတ်ပေးလိမ့်မည်။ ၎င်းကိုကျွန်ုပ်တို့လျစ်လျူရှုပါကသင်မသိဘဲအချက်အလက်များကိုတိတ်တဆိတ် "လုပ်ဆောင်" သည်။

MySQLI :: get_warenings ဘာလုပ်ပေးသလဲ။

MySQLI :: Get_warenings () သည်ယခင်စစ်ဆင်ရေးမှ SQL ၏သတိပေးသတင်းအချက်အလက်ရရှိရန်အသုံးပြုသောနည်းလမ်းဖြစ်သည်။ ၎င်းသည်သတိပေးအဆင့်များ, ကုဒ်များနှင့်မက်ဆေ့ခ်ျများကို debug သို့မဟုတ် log လုပ်ရန်အသုံးပြုနိုင်သောအရာဝတ်ထုတစ်ခုကိုပြန်ပို့သည်။

အမှန်တကယ်အသုံးပြုမှုဥပမာများ

အခြေခံအသုံးပြုမှုကိုနားလည်ရန်အနည်းဆုံးပုံသက်သေကို ဦး စွာကြည့်ကြပါစို့။

 <?php

$mysqli = new mysqli("localhost", "user", "password", "test");

if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}

$sql = "INSERT INTO demo (name) VALUES ('ရှည်လျားသော strings အပြင်းအထန်ကြိုးပမ်းမှုများကိုသတိပေးအပိုရှည်သော string triggers များသည်အပိုရှည်ကြိုးအစပျိုးသတိပေးသတိပေး')";

if ($mysqli->query($sql)) {
    echo "အောင်မြင်စွာထည့်ပါ\n";

    // သတိပေးချက်များကိုစစ်ဆေးပါ
    $warning = $mysqli->get_warnings();
    while ($warning) {
        echo "အသိပေး: [{$warning->errno}] {$warning->message}\n";
        $warning = $warning->next();
    }

} else {
    echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $mysqli->error;
}

$mysqli->close();

လက်တွေ့အကြံပြုချက်များ - မှတ်တမ်းသတိပေးချက်များ

အမှန်တကယ်စီမံကိန်းများအနေဖြင့်အသုံးပြုသူအားတိုက်ရိုက်သတိပေးချက်များကိုတိုက်ရိုက်ထုတ်လွှင့်ရန်မလိုအပ်ပါ, ဥပမာအားဖြင့်:

 function log_warnings($mysqli) {
    $warning = $mysqli->get_warnings();
    while ($warning) {
        error_log("SQL Warning [{$warning->errno}]: {$warning->message}");
        $warning = $warning->next();
    }
}

$sql = "UPDATE users SET username='အလွန်အကျွံရှည်လျားသောအမည်များကိုပယ်ဖြတ်လိမ့်မည်' WHERE id=1";

if ($mysqli->query($sql)) {
    log_warnings($mysqli);
} else {
    error_log("SQL Error: " . $mysqli->error);
}

logging logging logging logging လုပ်ခြင်းသည်ပြ problems နာများကိုဖြေရှင်းရန်သာမကစာမေးပွဲဝန်းကျင်တွင် SQL အရည်အသွေးနှင့် ပတ်သက်. တုံ့ပြန်ချက်များကိုလည်းထောက်ပံ့ပေးသည်။

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

  1. Get_warenings () နောက်ဆုံးမေးမြန်းမှုအတွက်သာအလုပ်လုပ်သည်။

  2. ၎င်းသည်ဆက်နွယ်သောစာရင်းနှင့်တူသောအရာဝတ်ထုတစ်ခုကို လာမည့် () ဖြင့်ဖြတ်သန်းသွားသည်။

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

  4. MySQLI_REPORE () Get_warenings () ကို အစားထိုးလို့မရဘူး,

  5. Parameters များပြုလုပ်သောအခါသူတို့လုပ်သည့်အတွက်သတိပေးချက်များကိုပြင်ဆင်ရန်နှင့်သတိပေးချက်များကိုပြင်ဆင်ရန် ပြင်ဆင်ပါ

ဖြည့်စွက်: ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်အသုံးပြုသည်

Database Assistant Class ကို encapsulating လုပ်ခြင်းဖြင့်ပြုလုပ်နိုင်သည့်ထုတ်လုပ်မှုတွင်သတိပေးချက်များကိုသတိပေးချက်များကိုအကျဉ်းချုပ်ဖော်ပြရန်လိုကောင်းလိုပေမည်။

 class DB {
    protected $mysqli;

    public function __construct() {
        $this->mysqli = new mysqli("localhost", "user", "password", "appdb");
    }

    public function query($sql) {
        $result = $this->mysqli->query($sql);
        if ($result) {
            $this->logWarnings();
        } else {
            error_log("SQL Error: " . $this->mysqli->error);
        }
        return $result;
    }

    protected function logWarnings() {
        $warning = $this->mysqli->get_warnings();
        while ($warning) {
            error_log("[DBအသိပေး] {$warning->errno} - {$warning->message}");
            $warning = $warning->next();
        }
    }
}

$db = new DB();
$db->query("UPDATE posts SET title='标题过长会触发အသိပေး,အရှည်ထိန်းချုပ်မှုမှအာရုံစိုက်ပါ' WHERE id=42");

အကျဉ်းချုပ်

MySQLI ::) query () သည် MySQLI :: get_warennings () သည် အချက်အလက်သမာဓိရှိစေရန်အတွက်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည့်အစွမ်းထက်သောကိရိယာတစ်ခုဖြစ်သည်။ ဤသတိပေးစာများကိုလျစ်လျူမရှုပါနှင့်, သူတို့သည်သင်၏အနာဂတ် bug များကိုမကြာခဏဖုံးကွယ်လေ့ရှိသည်။ ဖွံ့ဖြိုးတိုးတက်မှုသို့မဟုတ်စမ်းသပ်ခြင်းပတ် 0 န်းကျင်တွင်သတိပေးချက်များကိုဖမ်းယူခြင်းနှင့်ကိုင်တွယ်ခြင်းအလေ့အထကိုတီထွင်ခြင်းသင်၏စီမံကိန်း၏ကြံ့ခိုင်မှုနှင့်ထိန်းသိမ်းခြင်းကိုသိသိသာသာတိုးတက်စေလိမ့်မည်။

သတိရပါ - အကယ်. အမှားကပရိုဂရမ်ကိုချော်စေလျှင်သတိပေးချက်ကသင့်အားထောင်ချောက်ကိုဆုံးရှုံးစေလိမ့်မည်။