ခေတ်သစ် PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အမှားအယွင်းများနှင့်သစ်ထုတ်လုပ်ခြင်းသည်လျှောက်လွှာတည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန်အရေးကြီးသောလင့်ခ်များဖြစ်သည်။ အထူးသဖြင့်ဒေတာဘေ့စ်တစ်ခုနှင့်အပြန်အလှန်ဆက်သွယ်သောအခါ SQL အမှားများကိုတိကျစွာသစ်ထုတ်လုပ်ခြင်းနှင့်ခြေရာခံခြင်းသည် debugging နှင့်ပြုပြင်ထိန်းသိမ်းခြင်းအတွက်အရေးပါသည်။ ဤဆောင်းပါးတွင် MySQLI_STMTT ကိုမည်သို့အသုံးပြုရမည်ကိုကျွန်ုပ်တို့ရှင်းပြပါမည်။
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-> အမှားသည် အမှားအယွင်းတစ်ခုသို့ပြန်လာလိမ့်မည်။
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), အမှားအယွင်းများ ( အရေးပါသော () ,
ယခုတွင်ကျွန်ုပ်တို့သည် MySQLI_STMT ကိုအသုံးပြုနည်း :: Database စစ်ဆင်ရေးများကျရှုံးသည့်အခါ PSR မှတ်တမ်းစံနှုန်းနှင့် တွဲဖက်. အမှားအယွင်းများ ကိုပုံဖော်နိုင်ကြောင်းပြသပါမည်။
ပထမ ဦး စွာ PSR-3 စံကိုထောက်ပံ့သောမှတ်တမ်းစာကြည့်တိုက်တစ်ခုကိုတပ်ဆင်ရန်လိုအပ်သည်။ ဤတွင်ကျွန်ုပ်တို့သည် Monolog ကိုဥပမာအဖြစ်ယူဆောင်လာသည်။
composer require monolog/monolog
နောက်တစ်ခုက 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));
ယခုဆိုပါစို့, ကျွန်ုပ်တို့တွင်ဒေတာဘေ့ စ ်နှင့်အပြန်အလှန်ဆက်သွယ်သောလုပ်ဆောင်ချက်တစ်ခုရှိသည်ဆိုပါစို့။
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 ကိုအလွယ်တကူခြေရာခံနိုင်သည်။
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 င်ကြွယ်ဝသောအမှားအချက်အလက်များကိုမှတ်တမ်းတင်ထားပြီး,
MySQLI_STMT :: $ အမှား လုပ်ဆောင်ချက် PSR မှတ်တမ်းစံနှုန်းနှင့် တွဲ. အသုံးပြု. ဒေတာဘေ့စ်လုပ်ငန်းများ၌အမှားအယွင်းများကိုထိရောက်စွာမှတ်တမ်းတင်နိုင်ပြီးမှတ်တမ်းများကိုအသုံးပြုခြင်းကိုသေချာစေသည်။ ၎င်းသည်ဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်တစ်ခုဖြစ်သည်ဖြစ်စေ, ထုတ်လုပ်မှုပတ် 0 န်းကျင်ဖြစ်စေ, PSR သစ်ထုတ်လုပ်ရေးစံမှပေးသောပြောင်းလွယ်ပြင်လွယ်ခြင်းနှင့်လိုက်လျောညီထွေဖြစ်ခြင်းသည်တိကျသောလိုက်နာမှု Log စာကြည့်တိုက်ကိုအသုံးပြုရန်တိကျသောအကောင်အထည်ဖော်မှုအသေးစိတ်ကိုစိတ်မပူပါနဲ့။
ထိုကဲ့သို့သောနည်းပညာ stack နှင့်အတူကျွန်ုပ်တို့သည်ပိုမိုထိရောက်သောအမှားခြေရာခံခြင်းနှင့်မှတ်တမ်းတင်ခြင်းများကိုရရှိနိုင်ပါသည်။ လျှောက်လွှာတည်ငြိမ်မှုနှင့်ဖွံ့ဖြိုးတိုးတက်မှုထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။