လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: PSR မှတ်တမ်းစံနှုန်းနှင့်ချိတ်ဆက်ရန် $ အမှားကိုသုံးပါ

MySQLI_STMT :: PSR မှတ်တမ်းစံနှုန်းနှင့်ချိတ်ဆက်ရန် $ အမှားကိုသုံးပါ

gitbox 2025-05-28

ခေတ်သစ် PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အမှားအယွင်းများနှင့်သစ်ထုတ်လုပ်ခြင်းသည်လျှောက်လွှာတည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အရေးကြီးသောလင့်ခ်များဖြစ်သည်။ အထူးသဖြင့်ဒေတာဘေ့စ်တစ်ခုနှင့်အပြန်အလှန်ဆက်သွယ်သောအခါ SQL အမှားများကိုတိကျစွာသစ်ထုတ်လုပ်ခြင်းနှင့်ခြေရာခံခြင်းသည် debugging နှင့်ပြုပြင်ထိန်းသိမ်းခြင်းအတွက်အရေးပါသည်။ ဤဆောင်းပါးတွင် MySQLI_STMTT ကိုမည်သို့အသုံးပြုရမည်ကိုကျွန်ုပ်တို့ရှင်းပြပါမည်။

1 ။ MySQLI_STMMT :: $ အမှား function ကဘာလဲ။

MySQLI_STMT :: $ အမှား သည် PHP တွင် MySQLI မှ MySQLI Extension မှထောက်ပံ့ပေးသောနည်းလမ်းဖြစ်သည်။ SQL Query ကို Execute လုပ်သည့်အခါအမှားတစ်ခုဖြစ်ပါကဒေတာဘေ့စ်မှအမှားသတင်းအချက်အလက်များကိုရယူရန်ဤပစ္စည်းများကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။

ဥပမာအားဖြင့်, ပြင်ဆင်ထားသည့်ကြေညာချက်ကိုကွပ်မျက်သည့်အခါအမှားတစ်ခုကြုံတွေ့ရသည်ဆိုပါစို့။

 $mysqli = new mysqli("localhost", "user", "password", "database");
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $userId);

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

ဤဥပမာတွင် SQL query တွင်အမှားတစ်ခုဖြစ်ပါက $ stmt-> အမှားသည် အမှားအယွင်းတစ်ခုသို့ပြန်လာလိမ့်မည်။

2 ။ PSR မှတ်တမ်းစံချိန်စံညွှန်းများခြုံငုံသုံးသပ်ချက်

PSR (PHP Standard PRODDOTIDED) သစ်ထုတ်လုပ်ရေးစံသည် logging ကိုစည်းလုံးစေရန် PHP ဂေဟစနစ်တွင်အသုံးပြုသော interface စံတစ်ခုဖြစ်သည်။ PSR-3 သည် PHP logging အတွက်စံသတ်မှတ်ချက်ဖြစ်သည်။ ၎င်းသည် logging interface တစ်ခုဖြစ်ပြီးမတူညီသောမှတ်တမ်းစာကြည့်တိုက်များ (ဥပမာ MonologhppP စသည်စနစ်) သည်ဤ interface ကိုအကောင်အထည်ဖော်နိုင်သည့်အတွက်ဤ interface ကိုအကောင်အထည်ဖော်နိုင်သဖြင့်စည်းလုံးညီညွတ်သောသစ်ထုတ်လုပ်မှုနည်းလမ်းကိုအသုံးပြုသည်။

PSR-3 log interface ၏ရိုးရှင်းသောအသုံးပြုမှုမှာအောက်ပါအတိုင်းဖြစ်သည် -

 use Psr\Log\LoggerInterface;

class MyApp
{
    private $logger;

    public function __construct(LoggerInterface $logger)
    {
        $this->logger = $logger;
    }

    public function someMethod()
    {
        // သစ်ခုတ်
        $this->logger->error('Something went wrong!');
    }
}

PSR-3 သည် Debug () , Info () , သတိပေးခြင်း (), အမှားအယွင်းများ ကိုရှာဖွေရန် Myanmar (Mether), အမှားအယွင်းများ ( အရေးပါသော () ,

3 ။ MySQLI_STMMT :: PSR သစ်ထုတ်လုပ်ရေးစံနှင့်အတူ $ error ကို ပေါင်းစပ်

ယခုတွင်ကျွန်ုပ်တို့သည် MySQLI_STMT ကိုအသုံးပြုနည်း :: Database စစ်ဆင်ရေးများကျရှုံးသည့်အခါ PSR မှတ်တမ်းစံနှုန်းနှင့် တွဲဖက်. အမှားအယွင်းများ ကိုပုံဖော်နိုင်ကြောင်းပြသပါမည်။

3.1 Log စာကြည့်တိုက်ကိုထည့်သွင်းပါ

ပထမ ဦး စွာ PSR-3 စံကိုထောက်ပံ့သောမှတ်တမ်းစာကြည့်တိုက်တစ်ခုကိုတပ်ဆင်ရန်လိုအပ်သည်။ ဤတွင်ကျွန်ုပ်တို့သည် Monolog ကိုဥပမာအဖြစ်ယူဆောင်လာသည်။

 composer require monolog/monolog

3.2 logger ကို configure လုပ်ခြင်း

နောက်တစ်ခုက Monolog Logger ကို configure လုပ်ပြီး PSR-3 interface နဲ့ပေါင်းစည်းသွားမှာပါ။

 use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$logger = new Logger('my_logger');
$logger->pushHandler(new StreamHandler('path/to/your.log', Logger::ERROR));

3.3 MySQLI_STMT :: $ အမှား နှင့် logger ကိုပေါင်းစပ်ခြင်း

ယခုဆိုပါစို့, ကျွန်ုပ်တို့တွင်ဒေတာဘေ့ ်နှင့်အပြန်အလှန်ဆက်သွယ်သောလုပ်ဆောင်ချက်တစ်ခုရှိသည်ဆိုပါစို့။

 function fetchData($mysqli, $userId, Logger $logger)
{
    $stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
    if (!$stmt) {
        $logger->error("SQL prepare failed: " . $mysqli->error);
        return false;
    }

    $stmt->bind_param("i", $userId);
    
    if (!$stmt->execute()) {
        $logger->error("SQL execution failed: " . $stmt->error);
        return false;
    }

    $result = $stmt->get_result();
    return $result->fetch_all(MYSQLI_ASSOC);
}

ဤဥပမာတွင်ဒေတာဘေ့စ်လည်ပတ်မှုမအောင်မြင်ပါကအမှားအယွင်းကိုသတ်မှတ်ထားသောမှတ်တမ်းဖိုင်တွင် logged လုပ်ပြီးအသေးစိတ်အမှားဖော်ပြချက်ပါရှိသည်။ ၎င်းသည် developer များကို SQL အမှားများနှင့် troubleshoot ကိုအလွယ်တကူခြေရာခံနိုင်သည်။

3.4 စိတ်ကြိုက်မှတ်တမ်းအချက်အလက်

PSR-3 စံသည်အမှားအယွင်းများကိုပိုမိုလေ့လာရန်ကူညီရန် Log ရှိအခြေအနေတွင်သတင်းအချက်အလက်များကိုမှတ်တမ်းတင်ရန်ခွင့်ပြုသည်။ ဥပမာအားဖြင့်ကျွန်ုပ်တို့သည် log of log ၏နောက်ဆက်တွဲ parameters များအဖြစ်ရှာဖွေရေးအထောက်အကူပြုသည့်အသုံးပြုသူ ID သို့မဟုတ်အခြားပြ problem နာအချက်အလက်များကိုအသုံးပြုနိုင်သည်။

 $logger->error('SQL execution failed', [
    'error' => $stmt->error,
    'user_id' => $userId,
    'query' => $stmt->sqlstate,
]);

အသုံးပြုသူ ID နှင့် SQL အမှားကုဒ်များအပါအ 0 င်ကြွယ်ဝသောအမှားအချက်အလက်များကိုမှတ်တမ်းတင်ထားပြီး,

4 ။ နိဂုံးချုပ်

MySQLI_STMT :: $ အမှား လုပ်ဆောင်ချက် PSR မှတ်တမ်းစံနှုန်းနှင့် တွဲ. အသုံးပြု. ဒေတာဘေ့စ်လုပ်ငန်းများ၌အမှားအယွင်းများကိုထိရောက်စွာမှတ်တမ်းတင်နိုင်ပြီးမှတ်တမ်းများကိုအသုံးပြုခြင်းကိုသေချာစေသည်။ ၎င်းသည်ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တစ်ခုဖြစ်သည်ဖြစ်စေ, ထုတ်လုပ်မှုပတ် 0 န်းကျင်ဖြစ်စေ, PSR သစ်ထုတ်လုပ်ရေးစံမှပေးသောပြောင်းလွယ်ပြင်လွယ်ခြင်းနှင့်လိုက်လျောညီထွေဖြစ်ခြင်းသည်တိကျသောလိုက်နာမှု Log စာကြည့်တိုက်ကိုအသုံးပြုရန်တိကျသောအကောင်အထည်ဖော်မှုအသေးစိတ်ကိုစိတ်မပူပါနဲ့။

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