လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: querger error output ကိုသင်၏ log system ထဲသို့ပေါင်းစပ်ပါ

MySQLI_STMT :: querger error output ကိုသင်၏ log system ထဲသို့ပေါင်းစပ်ပါ

gitbox 2025-05-28

ဒေတာဘေ့စ်လုပ်ငန်းများ၌ debugging php applications များကိုတီထွင်သောအခါအရေးပါသောအလုပ်ဖြစ်သည်။ MySQLI_STMT :: $ အမှား သည် SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါပေါ်ပေါက်လာသောအမှားများကိုဖမ်းယူနိုင်သည့်အမှားအယွင်းများကိုဖမ်းမိသောကိရိယာများကိုဖမ်းမိသောကိရိယာတစ်ခုဖြစ်သည်။ ဤအမှားများကိုပိုမိုကောင်းမွန်သောလမ်းကြောင်းရှာဖွေရန်နှင့် debug လုပ်ရန် MySQLI_SSTMT ၏အမှားအချက်အလက်များကို log system ထဲသို့ 0 င်ရောက်ခြင်းကို ပေါင်းစပ်ရန်အလွန်ထိရောက်စေသည်။

ဤဆောင်းပါးတွင် MySQLI_STMT ကိုမည်သို့ပေါင်းစပ်ရမည်ကိုကျွန်ုပ်တို့ရှင်းပြပါမည်။

1 ။ MySQLI_STMT :: $ error error error property ကိုနားလည်ပါ

MySQLI_STMT :: $ အမှား သည် MySQLI_STMT အတန်းအစား၏ပိုင်ဆိုင်မှုတစ်ခုဖြစ်သည်။ ဤအိမ်ခြံမြေမှတစ်ဆင့် MySQL မှပြန်လာသောအမှားမက်ဆေ့ခ်ျကိုသင်ဝင်ရောက်ကြည့်ရှုနိုင်သည်။ ဥပမာအားဖြင့်, သင်သည် SQL query တစ်ခုကို execute လုပ်ပါကအမှားတစ်ခုဖြစ်ပါကဤပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုမှတစ်ဆင့်အထူးအမှားအချက်အလက်များကိုသင်ရရှိနိုင်သည်။

 $stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $user_id);

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

အထက်ဖော်ပြပါကုဒ်တွင် SQL query execution ပျက်ကွက်လျှင် ဒေါ်လာ stmt-> အမှားတွင် MySQL အမှားအယွင်းရှိအသေးစိတ်ဖော်ပြချက်ပါလိမ့်မည်။ ပိုမိုကောင်းမွန်သောအမှားများသစ်ထုတ်လုပ်ခြင်းကိုသေချာစေရန်ကျွန်ုပ်တို့သည်ဤအမှားအယွင်းများကို log system သို့ဖြတ်သန်းသွားမည်ဖြစ်သည်။

2 ။ ရိုးရှင်းသောသစ်ထုတ်လုပ်ရေးစနစ်ဖန်တီးပါ

မှတ်တမ်းသို့အမှားအချက်အလက်များကိုရေးရန်ကျွန်ုပ်တို့ပထမ ဦး ဆုံးရိုးရှင်းသောသစ်ထုတ်လုပ်ရေးစနစ်ရှိသည်။ သစ်ခုတ်ရေးရေးသားခြင်းကိုစီမံရန် logger အတန်းကိုဖန်တီးနိုင်သည်။ ဤအတန်းသည်သတ်မှတ်ထားသောမှတ်တမ်းဖိုင်သို့အမှားအချက်အလက်များကိုရေးရန်တာဝန်ရှိသည်။

 class Logger {
    private $logFile;

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

    public function log($message) {
        $date = date('Y-m-d H:i:s');
        file_put_contents($this->logFile, "[$date] $message\n", FILE_APPEND);
    }
}

Logger အတန်းသည်သတ်မှတ်ထားသော log file ထဲသို့မှတ်တမ်းမက်ဆေ့ခ်ျတစ်ခုထည့်ပြီး timestamp ပါရှိသည်။ ထို့နောက် MySQLI_STMMT :: $ အမှား အိမ်ခြံမြေများမှတဆင့်ဒေတာဘေ့စ်စစ်ဆင်ရေးအမှားများကိုကျွန်ုပ်တို့ဖမ်းယူပါမည်။

3 ။ ဒေတာဘေ့စ်အမှားအယွင်းများကိုဖမ်းယူခြင်းနှင့် log ဖို့ရေးပါ

ယခုကျွန်ုပ်တို့သည် Database Operations မှမှတ်တမ်းသို့အမှားအချက်အလက်များကိုရေးရန် logger အတန်းကိုသုံးနိုင်သည်။ ကျွန်ုပ်တို့သည်ဒေတာဘေ့စ် connection ကိုတည်ဆောက်ပြီးရှာဖွေမှုကိုအကောင်အထည်ဖော်ရန်အဆင်သင့်ဖြစ်နေပြီဟု ယူဆပြီး ,

 $mysqli = new mysqli('localhost', 'user', 'password', 'database');
$logger = new Logger('/path/to/your/logfile.log');

$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $user_id);

if (!$stmt->execute()) {
    // အမှားအယွင်းများကိုဖမ်းပြီး log လုပ်ရန်ရေးပါ
    $errorMessage = "MySQL Error: " . $stmt->error;
    $logger->log($errorMessage);

    // အမှားအယွင်းများကိုပြသရန်သင်ရွေးချယ်နိုင်သည်,သို့မဟုတ်အမှားအယွင်းများနှင့်အတူကိုင်တွယ်ရန်အခြားနည်းလမ်းများ
    echo "An error occurred. Please check the logs for details.";
}

အထက်ပါကုဒ်တွင်ကျွန်ုပ်တို့သည်စုံစမ်းမှုစစ်ဆင်ရေးပြုလုပ်ရန်ကြိုးစားသည်။ အကယ် . မေးမြန်းမှုမအောင်မြင်ပါကအမှားအယွင်းကို MySQLI_STMT :: အမှားအယွင်းများ ဖြင့်ဖမ်းယူလိမ့်မည်

ဤနည်းအားဖြင့်ဒေတာဘေ့စ်အမှားများအားလုံးကို log file ထဲသို့အလွယ်တကူ log လုပ်နိုင်ပြီး၎င်းသည်ပြ problem နာကိုအလျင်အမြန်ရှာဖွေနိုင်သည်။

4 ။ logging ကိုတိုးတက်အောင်လုပ်ပါ။ နောက်ထပ်အချက်အလက်များထပ်ထည့်ပါ

Log Accessability တိုးတက်စေရန်အမှားမက်ဆေ့ခ်ျများကိုသစ်ထုတ်လုပ်သည့်အခါသင်နောက်ထပ်အခြေအနေများထပ်မံထည့်သွင်းနိုင်သည်။ ဥပမာအားဖြင့် SQL ကြေငြာချက်, SQL ကြေငြာချက်ကိုယ်တိုင်နှင့်အမှားဖိုင်နှင့်လိုင်းနံပါတ်နှင့်အခြားအချက်အလက်များကိုသင်မှတ်တမ်းတင်ထားသည့်အချိန်ကိုမှတ်တမ်းတင်နိုင်သည်။ ဤသည် debugging လုပ်ငန်းစဉ်အတွင်းအမှား၏အကြောင်းရင်းကိုပိုမိုနားလည်ရန်ကူညီလိမ့်မည်။

 class Logger {
    private $logFile;

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

    public function log($message) {
        $date = date('Y-m-d H:i:s');
        file_put_contents($this->logFile, "[$date] $message\n", FILE_APPEND);
    }

    public function logError($stmt, $sql) {
        $errorMessage = "MySQL Error: " . $stmt->error;
        $errorDetails = [
            'timestamp' => date('Y-m-d H:i:s'),
            'error_message' => $errorMessage,
            'sql' => $sql,
            'file' => debug_backtrace()[0]['file'],
            'line' => debug_backtrace()[0]['line']
        ];
        $this->log(json_encode($errorDetails));
    }
}

$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param("i", $user_id);

if (!$stmt->execute()) {
    // အသေးစိတ်အမှားသတင်းအချက်အလက်မှတ်တမ်းတင်
    $logger->logError($stmt, "SELECT * FROM users WHERE id = $user_id");
    echo "An error occurred. Please check the logs for details.";
}

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