လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMMT :: $ error error error message ကိုဗဟိုမှလုပ်ဆောင်ရန် Encapsulationsultulation function ကိုဖန်တီးပါ

MySQLI_STMMT :: $ error error error message ကိုဗဟိုမှလုပ်ဆောင်ရန် Encapsulationsultulation function ကိုဖန်တီးပါ

gitbox 2025-05-28

MySQL databases များကိုအသုံးပြုခြင်း PHP applications များကိုတီထွင်သောအခါအလွန်အသုံးများသောလည်ပတ်မှုတစ်ခုဖြစ်သည်။ များသောအားဖြင့် developer များသည် SQL Query များကိုကွပ်မျက်ခံရသောအခါ MySQLI extension ကို အသုံးပြု. SQL Query များနှင့် MySQLI_STMM အတန်းသည် SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ရန်နှင့်ကွပ်မျက်ရန်အဓိကမျက်နှာပြင်ဖြစ်သည်။ MySQLI သည် ကြွယ်ဝသောအမှားကိုင်တွယ်သည့်ယန္တရားများပေးသော်လည်း developer များသည်သူတို့ကိုအသုံးပြုသောအခါ develabase အမှားများကိုလျစ်လျူရှုနိုင်သည်သို့မဟုတ်ထပ်ခါတလဲလဲပြုလုပ်နိုင်သည်။ Code ၏ဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာစွမ်းဆောင်ရည်နှင့်ထိန်းသိမ်းမှုကိုတိုးတက်စေရန်အတွက် function ကို encapsqli_stmt ကိုကိုင်တွယ်ရန် function တစ်ခုကို encapsulating mySQLI_STMT :: $ error error message သည်ထိရောက်သောဖြေရှင်းချက်တစ်ခုဖြစ်သည်။

ဤဆောင်းပါးသည် function ကို underfulate လုပ်ပြီး MySQLI_STMT ကိုစီမံခန့်ခွဲရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည် .: MySQLI_STMT ကိုစီမံခန့်ခွဲမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ MySQLI_STMT :: အမှားအချက်အလက်များရရန် $ အမှားကို သုံးပါ

PHP တွင် MySQLI_STMM ကို အသုံးပြု. SQL ထုတ်ပြန်ချက်များကိုကွပ်မျက်သည့်အခါဒေတာဘေ့စ်စစ်ဆင်ရေး၏အမှားအချက်အလက်များကို MySQLI_STMT :: $ error attribute ကိုမှရရှိနိုင်သည်။ ဒေတာဘေ့စ်စုံစမ်းမှုတစ်ခုသို့မဟုတ်စစ်ဆင်ရေးပျက်ကွက်သည့်အခါ MySQLI_STMT :: $ error property သည်အမှားအယွင်းများပြန်ပို့သည်။ အမှားမရှိလျှင်ပြန်လာသောတန်ဖိုးသည်အချည်းနှီးသော string တစ်ခုဖြစ်သည်။

MySQLI_STMMT ကို အသုံးပြု. အမှားသတင်းအချက်အလက်များကိုမည်သို့ရယူရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာတစ်ခုဖြစ်သည်။

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

$stmt = $mysqli->prepare("SELECT * FROM non_existent_table");
$stmt->execute();

if ($stmt->error) {
    echo "Error: " . $stmt->error;
}

$stmt->close();
$mysqli->close();
?>

အထက်ဖော်ပြပါဥပမာတွင် Query ကိုကွပ်မျက်သည့်အခါ ဒေါ်လာ stmt-> အမှားတစ်ခုသည် ဒေတာဘေ့စ်စားပွဲမတည်ရှိပါကအမှားတစ်ခုသို့ပြန်ပို့သည်။

2 ။ အမှားများကိုဗဟိုမှကိုင်တွယ်ရန် Encapsulationulation function ကိုဖန်တီးပါ

ဒေတာဘေ့စ်လုပ်ငန်းများ၌အမှားစီမံခန့်ခွဲမှု၏စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်ကျွန်ုပ်တို့သည် Encapsulation function ကိုဖန်တီးနိုင်သည်။ ဤလုပ်ဆောင်ချက်သည် MySQLI_STMT အရာဝတ်ထုကို parameter တစ်ခုအနေဖြင့်လက်ခံရရှိနိုင်သည်။ အမှားအယွင်းများရှိ, မှတ်တမ်းတင်ခြင်းရှိမရှိစစ်ဆေးပါ။ ဤနည်းအားဖြင့်အမှားတစ်ခုဖြစ်ပေါ်သည့်အခါ MySQLI_STMT :: $ အမှားကို ကိုယ်တိုင်ကိုယ်ကျစစ်ဆေးရန်မလိုအပ်ပါ။

အောက်ဖော်ပြပါသည် Encapsulation ၏လုပ်ဆောင်မှုကိုအကောင်အထည်ဖော်ခြင်းဖြစ်သည်။

 <?php
function handleQueryError($stmt) {
    if ($stmt->error) {
        // ဤနေရာတွင်သင်မှတ်တမ်းဖိုင်သို့အမှားအချက်အလက်များကိုမှတ်တမ်းတင်နိုင်သည်
        // သို့မဟုတ်တိုက်ရိုက်ထုတ်လွှြအမှားသတင်းအချက်အလက်
        error_log("SQL Error: " . $stmt->error); // မှတ်တမ်းအမှားမှတ်တမ်း
        die("ဒေတာဘေ့စ်စစ်ဆင်ရေးမအောင်မြင်ပါ,ကျေးဇူးပြု. နောက်မှထပ်ကြိုးစားပါ!"); // script ကိုအဆုံးသတ်ပြီးအသုံးပြုရလွယ်ကူသောအမှားအယွင်းကိုပြပါ
    }
}

$mysqli = new mysqli("localhost", "username", "password", "database");

$stmt = $mysqli->prepare("SELECT * FROM non_existent_table");
$stmt->execute();

// အမှားများကိုကိုင်တွယ်ရန် Encapsulated functions များကိုသုံးပါ
handleQueryError($stmt);

$stmt->close();
$mysqli->close();
?>

ဤဥပမာတွင် လက်ကိုင်စက် () function သည်အမှားအယွင်းများအတွက်စစ်ဆေးမှုများနှင့်အမှားအယွင်းများကိုမှတ်တမ်းဖိုင်သို့မှတ်တမ်းတင်ထားသည်။ အမှားတစ်ခုဖြစ်ပါက၎င်းသည်အသုံးပြုသူအတွက်ဖော်ရွေသောအမှားတစ်ခုဖြစ်ပြီး script execution ကိုရပ်တန့်စေသည်။

3 ။ Encapsulationulation function extension ကို: ကွဲပြားခြားနားသောအမှားကိုင်တွယ်မဟာဗျူဟာများကိုထောက်ပံ့ပါ

ကွဲပြားခြားနားသော application ဇာတ်လမ်းပေါ် မူတည်. ကွဲပြားခြားနားသောအမှားကိုင်တွယ်မဟာဗျူဟာလိုအပ်လိမ့်မည်။ ဥပမာအားဖြင့်အချို့ကိစ္စရပ်များတွင် developer များသည်အမှားများကိုဒေတာဘေ့စ်တစ်ခုသို့ 0 င်ခွင့်ပြုခြင်းသို့မဟုတ်အုပ်ချုပ်ရေးမှူးများထံသို့အီးမေးလ်ပို့ချင်ကြသည်။ Encapsulation လုပ်ငန်း၏ပြောင်းလွယ်ပြင်လွယ်မှုကိုတိုးမြှင့်နိုင်ရန်အတွက်ကျွန်ုပ်တို့သည် လက်ကိုင်စက် () function ကိုတိုးချဲ့နိုင်သည်။

ဒေတာဘေ့စ်များ, မှတ်တမ်းဖိုင်များသို့သို့မဟုတ်အီးမေးလ်များပို့ခြင်းသို့သစ်ထုတ်လုပ်ခြင်းအမှားများကိုထောက်ပံ့ပေးသောတိုးချဲ့ထားသော Encapsulationsing function ကိုဤတွင်ဖော်ပြထားသည်။

 <?php
function handleQueryError($stmt, $logToDatabase = false, $sendEmail = false) {
    if ($stmt->error) {
        // မှတ်တမ်းတင်ရန်အမှားများကိုမှတ်တမ်းတင်ပါ
        error_log("SQL Error: " . $stmt->error);

        // သင်ဒေတာဘေ့စ်ကိုမှတ်တမ်းတင်ရန်လိုအပ်ပါက
        if ($logToDatabase) {
            $mysqli = new mysqli("localhost", "username", "password", "database");
            $errorMessage = $stmt->error;
            $stmt = $mysqli->prepare("INSERT INTO error_logs (message) VALUES (?)");
            $stmt->bind_param("s", $errorMessage);
            $stmt->execute();
            $stmt->close();
            $mysqli->close();
        }

        // သင်အုပ်ချုပ်ရေးမှူးထံအီးမေးလ်ပို့ရန်လိုအပ်ပါက
        if ($sendEmail) {
            mail("[email protected]", "Database Error", "SQL Error: " . $stmt->error);
        }

        die("ဒေတာဘေ့စ်စစ်ဆင်ရေးမအောင်မြင်ပါ,ကျေးဇူးပြု. နောက်မှထပ်ကြိုးစားပါ!");
    }
}

$mysqli = new mysqli("localhost", "username", "password", "database");

$stmt = $mysqli->prepare("SELECT * FROM non_existent_table");
$stmt->execute();

// တိုးချဲ့ဗားရှင်းလုပ်ဆောင်ချက်များကိုသုံးပါ,အီးမေးလ်များကိုမှတ်တမ်းတင်ရန်အမှားများကိုမှတ်တမ်းတင်ပါ
handleQueryError($stmt, true, true);

$stmt->close();
$mysqli->close();
?>

Encapsulationulation function version ၏ဤဗားရှင်းတွင် developer သည်အချက်အလက်အချက်အလက်များကိုဒေတာဘေ့စ်သို့မှတ်တမ်းတင်ရန်သို့မဟုတ်အီးမေးလ်မှတဆင့်အမည်အုပ်ချုပ်ရေးကိုအသိပေးခြင်းရှိမရှိရွေးချယ်နိုင်သည်။

4 ။ အကျဉ်းချုပ်

Centrally Process ကို Centrally process ကို encapsuating mySQLI_STMT :: $ error error error error information, database စစ်ဆင်ရေး၏အမှားစီမံခန့်ခွဲမှုစွမ်းဆောင်ရည်ကိုများစွာတိုးတက်စေနိုင်သည်။ ဤနည်းလမ်းသည် developer များအားဒေတာဘေ့စ်လည်ပတ်မှုတစ်ခုစီတွင်အမှားကိုင်တွယ်သည့်ကုဒ်များကိုထပ်ခါတလဲလဲရေးရန်မလိုအပ်ပါ။ ဖိုင်များ, ဒေတာဘေ့စ်များကိုမှတ်တမ်းတင်ခြင်းသို့မဟုတ်အီးမေးလ်သတိပေးချက်များပေးပို့ခြင်းကဲ့သို့သောစီမံကိန်း၏လိုအပ်ချက်များအရစီမံကိန်း၏လိုအပ်ချက်များအရအမှားကိုင်တွယ်သည့်နည်းဗျူဟာများကိုသင်ပြောင်းသင့်သည်။ ၎င်းသည် developer များကဒေတာဘေ့စ်စစ်ဆင်ရေးများတွင်အလားအလာရှိသောပြ problems နာများကိုအချိန်မီပြသခြင်းနှင့်လျှောက်လွှာတည်ငြိမ်မှုနှင့်သုံးစွဲသူအတွေ့အကြုံများကိုတိုးတက်အောင်ပြုလုပ်ရန်နှင့်ကိုင်တွယ်ဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်။

ဆက်စပ်အကြောင်းအရာ